You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
874 Въведение в програмирането със C#<br />
Имената на методите трябва да се съставят по схемата +<br />
, например PrintReport(), LoadSettings() или SetUserName().<br />
Обектът може да е съществително или да е съставен от съществително и<br />
прилагателно, например ShowAnswer(), ConnectToRandomTorrentServer() или<br />
FindMaxValue().<br />
Името на метода трябва да отговаря на въпроса какво извършва метода.<br />
Ако не можете да измислите добро име, вероятно трябва да преразгледате<br />
самия метод и дали е удачно написан.<br />
Като примери за лоши имена на методи можем да дадем следните: DoWork()<br />
(не става ясно каква точно работа върши), Printer() (няма глагол), Find2()<br />
(ами защо не е Find7()?), ChkErr() (не се препоръчват съкращения),<br />
NextPosition() (няма глагол).<br />
Понякога единични глаголи са също добро име за метод, стига да става ясно<br />
какво прави съответния метод и върху какви обекти оперира. Например ако<br />
имаме клас Task, методите Start(), Stop() и Cancel() са с добри имена,<br />
защото става ясно, че стартират, спират или оттеглят изпълнението на<br />
задачата, в текущия обект (this). В други случаи единичния глагол е<br />
грешно име, например в клас с име Utils, методи с имена Evaluate(),<br />
Create() или Stop() са неадекватни, защото няма контекст.<br />
Методи, които връщат стойност<br />
Имената на методите, които връщат стойност, трябва да описват връщаната<br />
стойност, например GetNumberOfProcessors(), FindMinPath(), GetPrice(),<br />
GetRowsCount(), CreateNewInstance().<br />
Примери за лоши имена на методи, които връщат стойност (функции) са<br />
следните: ShowReport() (не става ясно какво връща методът), Value()<br />
(трябва да е GetValue() или HasValue()), Student() (няма глагол), Empty()<br />
(трябва да е IsEmpty()).<br />
Когато се връща стойност трябва да е ясна мерната единица:<br />
MeasureFontInPixels(...), а не MeasureFont(...).<br />
Единствена цел на методите<br />
Един метод, който извършва няколко неща е трудно да бъде именуван –<br />
какво име ще дадете на метод, който прави годишен отчет на приходите,<br />
сваля обновления на софтуера от интернет и сканира системата за вируси?<br />
Например CreateAnnualIncomesReportDownloadUpdatesAndScanForViruses?<br />
Методите трябва да имат една единствена цел, т.е. да<br />
решават само една задача, не няколко едновременно!<br />
Методи с няколко цели (weak cohesion) не могат и не трябва да се именуват<br />
правилно. Те трябва да се преработят.