Czy jest szybszy sposób w C #

#if foo
  Something();
#endif

Jak pseudo-kod:

#if(foo, DoThat(); )

Jestem programistą, a programistrzy są leniwi ;-)

c#
3
Crimson 9 styczeń 2020, 12:48

1 odpowiedź

Najlepsza odpowiedź

Nie ma nic, co pozwala pisać #if ... #endif na jednej linii.

Jeśli Something powinien być zdefiniowany , jeśli FOO jest zdefiniowany, możesz go udekorować z {X2}}:

[Conditional("FOO")]
public void Something()
{
   ...
}

Jeśli to zrobisz, kompilator usunie wszystkie połączenia do Something, chyba że zostanie zdefiniowany FOO.


Dobrym pomysłem jest również zachować wszystkie #ifs w jednym miejscu, a nie przeplatane przez kod. Jak również ułatwia widzieć, jak zachowanie aplikacji zmienia się w zależności od warunkowego symboli kompilacji są zdefiniowane, usuwa również szum #if z większości kodu.

Może również mieć sens, aby mieć całkowicie różne wersje tego samego pliku dla różnych celów (np. Thing.Foo.cs i Thing.cs) i określ w pliku CSProj, który należy dołączyć, na podstawie warunków.


Wreszcie pamiętaj, że punkt kodu ma być czytany i zrozumiany: Skup się na pisaniu przezroczystego i zrozumiałego kodu, zamiast kodu, który bierze najkrótszą ilość czasu na napisanie. Będziesz spędzić dużo czasu, czytając swój kod niż pisanie go na dłuższą metę.

12
canton7 9 styczeń 2020, 09:58