Click here to Skip to main content

The Weird and The Wonderful

   

The Weird and The Wonderful forum is a place to post Coding Horrors, Worst Practices, and the occasional flash of brilliance.

We all come across code that simply boggles the mind. Lazy kludges, embarrasing mistakes, horrid workarounds and developers just not quite getting it. And then somedays we come across - or write - the truly sublime.

Post your Best, your worst, and your most interesting. But please - no programming questions . This forum is purely for amusement and discussions on code snippets. All actual programming questions will be removed.

 
GeneralRe: The beauty that is the default conversion... PinmvpOriginalGriff31-Jan-12 1:01 
GeneralRe: The beauty that is the default conversion... PinmemberCDP180231-Jan-12 1:01 
GeneralRe: The beauty that is the default conversion... PinmemberPIEBALDconsult31-Jan-12 2:26 
GeneralRe: The beauty that is the default conversion... PinmemberCDP180231-Jan-12 2:44 
GeneralRe: The beauty that is the default conversion... Pinmembertgrt1-Feb-12 2:56 
GeneralRe: The beauty that is the default conversion... PinmemberGary Wheeler2-Feb-12 0:13 
GeneralRe: The beauty that is the default conversion... PinmemberRobCroll31-Jan-12 11:11 
RantEnabling backwards compatibility PinmemberChanoch Wiggers30-Jan-12 2:30 
So this is an approach that proved so successful that it was made into a standard. You're writing a shared library and you're concerned to ensure future compatibility across services. Problems include:
 
* How to support non built-in types? (e.g. MyCustomType)
* How to support float, int, double, etc?
* How to prevent constantly updating interfaces from complicating builds?
 
Best approach? Well, how about you convert all your arguments into Strings to transfer across the wire and then convert them back.
 
Every method has the following signature:
 
public String[] doSomething(String[] args, String userId)
 
Then you have a static library that allows:
 
TypeUtils.stringify(Object object); // native types are supported by simply ""+myVar
Object obj = TypeUtils.fromString(String string, String fromType);
 
Easy. (Note you may need to cast the object returned from TypeUtils.fromString(). User id is there to ensure security, obviously. You don't have to use the TypeUtils but you are encouraged to, for convenience.
 
This way, when you swap args[2] and args[3], or when you introduce a new argument at the end, you don't have to declare a new version of the interface.
 
Simply keep the same version interface jar throughout and require everyone to use the very latest implementation.
This is why I don't program

GeneralRe: Enabling backwards compatibility PinmemberCDP180230-Jan-12 3:17 
GeneralRe: Enabling backwards compatibility Pinmemberenglebart1-Feb-12 2:42 
JokeRe: Enabling backwards compatibility PinmemberMoshe Katz1-Feb-12 11:00 
GeneralRe: Enabling backwards compatibility Pinmemberjsc4230-Jan-12 3:43 
GeneralRe: Enabling backwards compatibility PinmemberChanoch Wiggers30-Jan-12 4:06 
GeneralRe: Enabling backwards compatibility PinmemberFiro Atrum Ventus30-Jan-12 11:15 
GeneralRe: Enabling backwards compatibility PinmemberPIEBALDconsult31-Jan-12 2:24 
GeneralRe: Enabling backwards compatibility Pinmembertecgoblin1-Feb-12 0:27 
GeneralRe: Enabling backwards compatibility PinmemberGamleKoder1-Feb-12 7:56 
GeneralRe: Enabling backwards compatibility Pinmembertecgoblin1-Feb-12 8:10 
GeneralRe: Enabling backwards compatibility PinmemberStefan_Lang1-Feb-12 1:42 
GeneralRe: Enabling backwards compatibility PinmemberGarry Lowther1-Feb-12 1:42 
GeneralRe: Enabling backwards compatibility Pinmembercharlieg1-Feb-12 5:52 
GeneralRe: Enabling backwards compatibility PinmemberJeremy David Thomson1-Feb-12 10:37 
GeneralStrictly Short Circuit PinprotectorAspDotNetDev26-Jan-12 15:02 
GeneralRe: Strictly Short Circuit Pinmemberryanb3127-Jan-12 5:25 
GeneralRe: Strictly Short Circuit Pinmembercpkilekofp27-Jan-12 6:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web04 | 2.8.140709.1 | Last Updated 11 Jul 2014
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid