This is great advice - we should create a Coding Conventions page on the wiki 
and integrate it there. 

Thanks for updating the translations Matthias!

Richard

On Sat, 05 May 2007 23:22:10 +0200
"Matthias Basler" <[EMAIL PROTECTED]> wrote:

> Hi uDiggers,
> 
> once again I have committed the German adaptations to the latest changes in 
> the properties files.
> 
> One thing I noted and about which I was very disappointed is that obviously 
> many developers of uDig still think it a good idea to build dynamic Strings 
> in the following way:
> 
> String myMessage = msgPart1 + someFile + msgPart2 + someOtherContent;
> 
> To give a "nice" example from "WorldImageServiceExtension":
>   return
> Messages.WorldImageServiceExtension_needsFile+"\n\t-"+worldFile+"\n"+Messages.WorldImageServiceExtension_or+"\n\t-"+otherWorldFile;
>  
> 
> For all of you who havn't yet realized: This is a very bad way to build 
> dynamic Strings for four reasons:
> 
> 1. Not every language splits sentences in the same way as English. For 
> example if you have two arguments a foreign language might integrate them in 
> different order. Can you tell how a Chinese translator would build up the 
> sentence???
> 
> 2. Having two or three sentence parts (or single words) as texts in the 
> .properties files makes it sometimes hard to guess (without looking at the 
> source code) which texts will be combined how later.
> 
> 3. Some of the cases even expect whitespaces in the properies files 
> (otherwise they end up with something like
>   "The fileimage.pngcould not be loaded because ofNullPointerException.")
> My ressource bundle editor ignores (and deletes) trailing whitespaces, and I 
> tend to say that it does so correctly, because leading and trailing 
> whitespaces in properties files are really a bad habit.
> 
> 4. Sentences that try to avoid correct dynamic structures often take the form 
> "I have this or that problem with following file: " + myfile
> So they end with a colon and then give the argument. While this is usually 
> not a problem in English language, this structure leads to unaesthetic and 
> forced sentences in other languages.
> 
> I hope these arguments are enough to reconsider your choice!
> 
> So, PLEASE, whenever arguments are needed in Strings, try to use the
> MessageFormat.format(string, arguments) function or something similar. 
> Example:
> MessageFormat.format(
>     "This is a dynamic String with {0} and {1}.",
>     new Object[]{"Argument 1", "Argument 2"})
> There are already some examples of this in uDig source code, so probably 
> people DO know but simply are too lazy or too much in a hurry to care.
> 
> Maybe each module maintainer can check his/her module for occurrences?
> This is a problem very common in the catalog plugins (e.g. for error 
> messages), but I found it in a few other plugins as well.
> 
> PS. I havn't created a JIRA task yet, simply because having this as ONE task 
> would create one of those "never finished" tasks and because I am too lazy to 
> create an issue for each and every plugin.
> 
> PPS. Tip: If you really need whitespaces in your code, use ' ' and '\n' 
> instead of  " "  resp. "\n" and you can save yourself the "//$NON-NLS-1$".
> -- 
> Matthias Basler
> [EMAIL PROTECTED]
> 
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

Reply via email to