Метод (програмиране): Разлика между версии

Изтрито е съдържание Добавено е съдържание
Rstfgh (беседа | приноси)
Редакция без резюме
Ред 96:
3. Един метод трябва да "знае" за "околната среда" точно толкова колкото е необходимо за да може да си свърши работата, и трябва да бъде видим само от методи, които биха могли да имат работа с него. Предаването на масив от данни или структура към метод, който има нужда само от един елемент от тези данни е грешен подход и трябва да се избягва.{{Br}}
4. Винаги когато в програмата нещо трябва да се извърши на повече от едно място то този код трябва да се обособи в отделен метод. По този начин евентуални бъдещи корекции ще трябва да се направят само в тялото на метода, а не на няколко места в основната програма, или в други методи.
 
==Статични и динамични методи==
В езика C# методите могат да бъдат "привързани" както към даден клас като цяло, така и към дадена инстанция (елемент) на дадения клас.Когато метода бъде дефиниран с ключовата дума static пред дефиницията си, то той е статичен. Този метод работи не върху конкретен обект от класа, а върху данни от целия клас.
Ако например имаме клас "автомобил" и направим статичен метод за изчисляване на разхода на гориво, то този метод няма да се интересува за кой точно автомобил става въпрос. Той ще очаква да му се подадат като параметри пробега и изразходените литри гориво, и ще връща резултата в литри на 100 км. Така всички обекти, наследници на клас "автомобил" ще могат да изчисляват разхода си, ползвайки този метод.
Особеност на статичните методи е това, че те могат да се извикват дори и да няма нито един обект от дадения клас, тъй както както казахме те са "вързани" към самия клас, а не към определен обект от него. Можем да извикаме Automobile.GetAverageMPG(miles, gallons) без да се интересуваме дали има вече създаден обект от клас Automobiles. Както се забелязва от примера статичния метод се извиква като се укаже името на клас преди името на метода.
Динамичните методи за разлика от статичните са "вързани" към точно определен обект на дадения клас, и извършват манипулации въз основа на данните на дадения обект, а не на класа като цяло.
Ако имаме два обекта - примерно carA и carB - от клас Automobiles, и всеки от обектите пази в себе си данни за последното показание на километража и заредените литри гориво, тогава извикването на carA.GetAverageMPG() и съответно на carB.GetAverageMPG() ще връща разхода на гориво за конкретния обект, ползвайки данните от обекта. Динамичните методи се извикват чрез добавяне на името на обекта преди името на метода.