2013-03-30 13 views
15

Użyłem C# do stworzenia pierwszego projektu. Mam wiele błędów ostrzeżenia i wszystkie te błędy ostrzeżenia mają być pojedyncze Błąd (Błąd kompilatora wewnętrznego Zobacz dziennik konsoli, aby uzyskać więcej informacji.)#pragma ostrzeżenie disable & restore

W celu ograniczenia błędów ostrzegawczych użyłem #pragma Ostrzeżenie wyłączono. #pragma warning restore przód i tył kodu problemowego.

Mam wątpliwości, że w moim ostatecznym kompilacji powinienem zostawić to ostrzeżenie #pragma wyłączyć & przywrócić, jak to jest w programie; czy muszę to usunąć? np .:

#pragma warning disable 
if (Displayer.instance != null && CTR.Tore== "Keepit") 
{ 
    Displayer.instance.SetFielderProfile (i); 
} 
#pragma warning restore 

Do ostatecznej kompilacji muszę ją usunąć, czy nie?

Odpowiedz

6

Jeśli jest to kod o jakiejkolwiek wartości praktycznej, nie powinieneś mieć żadnego ostrzeżenia i skompilować z ustawieniem "ostrzeżenia jako błąd" z włączonymi wszystkimi ostrzeżeniami.

Kod, który pokazujesz, nie wydaje się być błędem sam w sobie. Więc nie widzę powodu, dla którego potrzebujesz pragmy.

Ale tak naprawdę to jest twoje wezwanie - twój kod i jeśli nikt nie potrzebuje go używać/szukać/płacić - rób wszystko, co działa dla ciebie.

+0

Dziękuję za odpowiedź. . – SaravanaKumar

+0

Nie zgadzam się. Miałem na przykład klasy, które musiały dziedziczyć po pewnych interfejsach. Te interfejsy czasami miały zdarzenia, których nie potrzebowałem do tej konkretnej implementacji. Czemu nie pragma ostrzeżeń o nieużywanych zdarzeniach? –

+0

@shaitibber, jeśli masz dobry powód (i podaj dobry komentarz śródliniowy) - dobrze jest wyłączyć przypadkowe ostrzeżenia. Kod w pytaniu nie pokazuje żadnych oznak, że taka pragma jest potrzebna ... i uważam, że sprawa, o której wspomniałeś, nie powinna powodować ostrzeżeń, ponieważ implementacja interfejsu nie może być traktowana przez kompilator jako "nieużywana" - zadając osobne pytanie, dlaczego ostrzeżenie może być dobrym pomysłem (należy się upewnić, czy jest już dobra odpowiedź na każde ostrzeżenie). –

34

Przynajmniej powinieneś wiedzieć, które ostrzeżenia umyślnie ignorujesz. W ten sposób, jeśli późniejsze czynności konserwacyjne wprowadzą "nowe" ostrzeżenie/problem, o którym powinieneś wiedzieć, ostrzeżenie o nowo wprowadzonym błędzie nie zostanie zniesione przez ogólną dyrektywę wyłączania ostrzeżeń pragma.

Możesz otrzymać numery ostrzegawcze dotyczące problemów z budową, które postanowiłeś zignorować z okna kompilacji Wyjście w Visual Studio. Zazwyczaj są one oznaczone jako "Ostrzeżenie CS0168 ...." lub podobne. W takim przypadku możesz skierować tylko te błędy, które zignorowałeś:

#pragma warning disable 168, 3021 

    //Your code that generates warnings CS0168 and CS3021 here 

#pragma warning restore 168, 3021 
+15

+1. Dodałbym zalecenie, aby zawsze mieć komentarz wyjaśniający, dlaczego 0128 i 3021 nie mają tu zastosowania; częściowo dlatego, że jeśli nie możesz podać dobrego powodu, to po prostu ukrywasz błąd, częściowo dlatego, że jest to różnica w stosunku do kogoś, kto patrzy na to między rozsądną decyzją dewelopera, a leniwym zatuszowaniem. –