25.07.2017 Views

Intro-CSharp-Book-v2015

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Глава 21. Качествен програмен код 895<br />

В такъв случай се замислете дали не е по-добре да ги предавате като<br />

някакъв клас с много полета. Например ако имате метода AddStudent(…) с<br />

15 параметъра (име, адрес, контакти и още много други), можете да<br />

намалите параметрите му като подавате групи логически свързани параметри<br />

като клас, например така: AddStudent(personalData, contacts,<br />

universityDetails). Всеки от новите 3 параметъра ще съдържа по няколко<br />

полета и пак ще се прехвърля същата информация, но в по-лесен за<br />

възприемане вид.<br />

Понякога е логически по-издържано вместо един обект на метода да се<br />

подадат само едно или няколко негови полета. Това ще зависи най-вече от<br />

това дали методът трябва да знае за съществуването на този обект<br />

или не. Например имаме метод, който изчислява средния успех на даден<br />

студент – CalcAverageResults(Student s). Понеже успехът се изчислява от<br />

оценките на студента и останалите му данни нямат значение, е по-добре<br />

вместо Student да се предава като параметър списък от оценки. Така<br />

методът придобива вида CalcAverageResults(IList).<br />

Правилно използване на променливите<br />

В настоящия параграф ще разгледаме няколко добри практики при<br />

локалната работа с променливи.<br />

Връщане на резултат<br />

Когато връщаме резултат от метод, той трябва да се запази в<br />

променлива преди да се върне. Следният пример не казва какво се връща<br />

като резултат:<br />

return days * hoursPerDay * ratePerHour;<br />

По-добре би било така:<br />

int salary = days * hoursPerDay * ratePerHour;<br />

return salary;<br />

Има няколко причини да запазваме резултата преди да го видим. Едната е,<br />

че така документираме кода – по името на допълнителната променлива<br />

става ясно какво точно връщаме. Другата причина е, че когато дебъгваме<br />

програмата, ще можем да я спрем в момента, в който е изчислена<br />

връщаната стойност и ще можем да проверим дали е коректна. Третата<br />

причина е, че избягваме сложните изрази, които понякога може да са<br />

няколко реда дълги и заплетени.<br />

Принципи при инициализиране<br />

В .NET всички член-променливи в класовете се инициализират автоматично<br />

още при деклариране (за разлика от C/C++). Това се извършва от

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!