25.07.2017 Views

Intro-CSharp-Book-v2015

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 />

правилно. Те трябва да се преработят.

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

Saved successfully!

Ooh no, something went wrong!