[Mono-list] Preprocessor #define Standardization
Miguel de Icaza
miguel@ximian.com
20 Aug 2001 17:19:55 -0400
> I haven't seen any guidelines on this issue, and a quick search of the code
> has found
> only one instance of their usage. I have checked the documentation and the
> C# compiler (at least Microsoft's compiler) does support accepting
> preprocessor definitions on the command line via the /define directive.
There are a number of ways of dealing with this issue.
* Using separate source files when completely independent
implementations are required.
Consider for example the Windows.Forms, we will probably
have completely different versions of it depending on the
platform we will run.
* Using defines.
Defines look ugly and make your code look ugly, so this
should be used with care, and only in a few justified
cases.
Pretty much any piece of code like this:
#ifdef WINDOWS
Blah
#else
Blah2..
#endif
That is just plain ugly and it grows to be horrible.
It can be changed into having an `architecture' depending
bit and a generic bit. So you can turn that code always
into:
Blah ();
And then you have different implementations of Blah, see the
next section:
* Using auxiliary system classes.
Things like path separators could be abstracted in a class
called System.Private.Parameters, and then classes that need
to use that information would retrieve that from it.
Best wishes,
Miguel.