Относно правилата на подреждане на отделните компоненти в класа


2
Имам няколко (по-точно два) въпроса относно това как се позиционират отделните компоненти в класа.
Досега ми бе ясно следното:
Отгоре надолу:
1. константи
2. полета
3. конструктори
4.свойства
5. методи
//ако нещо не е така -моля, коригирайте//
Въпрос 1:
Понеже в лекциите видях различни варианти:
ако имаме само пропърти (без скрито поле), то къде се описва- над или след конструкторите?
Върпос 2:
При описанието на методите имали значение в какъв ред ги описваме:
интерфейсни, виртуални, статични, на самия клас?

Благодаря за вниманието.



Отговори



6

Според StyleCop важи следното:

Within a class, struct or interface: (SA1201 and SA1203)

  • Constant Fields
  • Fields
  • Constructors
  • Finalizers (Destructors)
  • Delegates
  • Events
  • Enums
  • Interfaces
  • Properties
  • Indexers
  • Methods
  • Structs
  • Classes

Within each of these groups order by access: (SA1202)

  • public
  • internal
  • protected internal
  • protected
  • private

Within each of the access groups, order by static, then non-static: (SA1204)

  • static
  • non-static

Within each of the static/non-static groups of fields, order by readonly, then non-readonly : (SA1214 and SA1215)

  • readonly
  • non-readonly

Иначе по спомен трейнърите казаха да си изберем наш стил и да го спазваме (разбира се като имамe предвит поне отчасти конвенциите)


от pl0xicity (155 точки)


0
Ако се придържаш към StyleCop няма да сгрешиш :)



0
По първият въпрос пропъртито с и без поле към него все си е пропърти, така че най-добре след конструктора.



3

Здравей, 

можеш да погледнеш и тази тема, в която питах същото преди година: 

http://forums.academy.telerik.com/89996/%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BD%D0%BE-%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B8%D1%80%D0%B0%D0%BD-c%23-%D0%BA%D0%BE%D0%B4-%D0%BE%D1%82-fields-%D0%B4%D0%BE-classes

Извадки:

Най-важното нещо е да има консистентност т.е. навсякъде да са подредени по един и същи начин за да можеш да се ориентираш бързо и да намираш това, което търсиш. 

Най-добрият начин е да се научиш да пишеш чист и качествен код без програми, защото ставаш зависим от тях.

Поздрави!


от martin.nikolov (4535 точки)


0
Напротив, най-добре е да ползваш програми, за да има кой да те бие през ръцете. Никога не можеш да си сигурен колко качествен код пишеш. С течение на времето виждаш какво ти се поправя и почваш да го пишеш качествено рефлексно.

от ivaylo.kenov (30760 точки)

0
Прав си, стига да не се получи така, че когато нямаме тази програма да не знаем как да си подредим и форматираме кода - ако сме свикнали са става автоматично с клавишна комбимация.

от martin.nikolov (4535 точки)


0
Здравейте, колеги не се бях замислял за подредеността, но така като гледам как StyleCop ги подрежда, горе долу спазвам същия принцип. Въпроса ми е добра практика ли е преди всяка секция да пиша с коментар каква е? За сега както и да ги подреждам винаги си пиша:
//Fields
....
//Constructors
...



0
Чел съм, че не е хубава практика да се коментират очевидни неща. Специално за стандартните групи в един клас, би трябвало кода сам да говори за себе си.

от pl0xicity (155 точки)

0
Благодаря, колега. Точно това исках да знам.




2

StyleCop-a е истината. Освен написаното от колегата ще добавя: 

Най-отгоре: namespace

Под него: using (ако ги има, за тях също е важно да са подредени)
using-ите се подреждата така:
- Най-отгоре: всички System - подредени по азбучен ред.
- Под тях: всички останали - пак подредени по азбучен ред.


от Rusekov (971 точки)