Cum se scrie codul de înaltă calitate

StyleCop - sora mai mica sau frate (care la fel de convenabil) instrument de FxCop, pe care am scris în secțiunea anterioară. Dar, spre deosebire de FxCop, StyleCop are o mulțime de reguli suplimentare legate de execuția codului.







După instalarea stilului StyleCop în Visual Studio, apar funcționalități suplimentare:

Toate regulile sunt împărțite în mai multe grupuri:

Puteți activa sau dezactiva regulile în fereastra de proprietăți:

Luați în considerare regulile de bază cu care se confruntă dezvoltatorii.

Reguli de documentare

* MustBeDocumented - toate elementele (metode, variabile etc.) trebuie documentate, inclusiv membri privați.

SA1625: ElementDocumentationMustNotBeCopiedAndPasted - descrierea variabilelor nu trebuie să fie aceeași:

SA1633: FileMustHaveHeader - toate fișierele trebuie să conțină un antet:

Și numele fișierului ar trebui să coincidă cu valoarea din fișier (SA1638: FileHeaderFileNameDocumentationMustMatchFileName).

SA1642: ConstructorSummaryDocumentationMustBeginWithStandardText - Descriere Designer ar trebui să se potrivească cu modelul „Inițializarea o nouă instanță a clasei.“:

Același lucru pentru destructori (SA1643: DestructorSummaryDocumentationMustBeginWithStandardText).

Reguli de aspect

SA1500: CurlyBracketsForMultiLineStatementsMustNotShareLine - parantezele trebuie plasate pe linii separate, adică în loc de

Același lucru este valabil și pentru codul din cadrul metodelor (SA1507: CodeMustNotContainMultipleBlankLinesInARow).

Restul regulilor se referă, de asemenea, în principal la necesitatea de a elimina liniile goale.

Normele privind menținerea

SA1119: StatementMustNotUseUnnecessaryParenthesis - codul nu trebuie să conțină paranteze suplimentare:

Toate metodele și proprietățile trebuie să aibă un identificator de acces specificat explicit (SA1400: AccessModifierMustBeDeclared).

Pentru expresii matematice, trebuie să indice în mod clar ordinea de execuție cu console suplimentare (SA1407: ArithmeticExpressionsMustDeclarePrecedence). Ie astfel de cod:

trebuie să rescrieți astfel:

Codul nu trebuie să conțină un cod neutilizat (SA1409: RemoveUnnecessaryCode):

Regulile numelui

Pe scurt, numele metodelor, clase ar trebui să înceapă cu o literă mare (SA1300: ElementMustBeginWithUpperCaseLetter), și interfețele - cu litera „I“ (SA1302: InterfaceNamesMustBeginWithI). Nu puteți utiliza prefixele M_ și s_ nume de variabile (SA1308: VariableNamesMustNotBePrefixed), și nu puteți utiliza caracterul de subliniere (SA1309: FieldNamesMustNotBeginWithUnderscore, SA1310: FieldNamesMustNotContainUnderscore).







Reguli de ordine

Una dintre cele mai discutate reguli este că toate invitațiile trebuie să fie găzduite în spațiile de nume.

Dacă vorbim despre motivul acestei reguli, atunci este legată de posibile dificultăți atunci când lucrăm cu pseudonime.

De exemplu, acest cod este compilat cu succes:

Dar nu este clar ce Guid va fi folosit.

Acest cod va provoca un avertisment CS0576: Spațiul de nume "Microsoft.Sample" conține o definiție în conflict cu aliasul "Guid":

Dar ajută la evitarea confuziei în nume.

Toate elementele trebuie să fie în ordinea corectă din fișierul sursă (SA1201: ElementsMustAppearInTheCorrectOrder):

  • Directive externe externe
  • Utilizarea directivelor
  • Spații de nume
  • Delegații
  • enums
  • interfeţe
  • structs
  • clase

În clasă, structură, interfață, ordinea ar trebui să fie:

Elementele trebuie sortate după nivelul de acces (SA1202: ElementsMustBeOrderedByAccess):

Toate usings trebuie să fie sortate și neutilizate - eliminat (SA1210: UsingDirectivesMustBeOrderedAlphabeticallyByNamespace).

Norme de citire

Trebuie să utilizați acest prefix pentru a accesa membrii clasei (SA1101: PrefixLocalCallsWithThis). Alte reguli de acest tip sunt asociate cu poziționarea parametrilor, regiunilor, expresiilor etc.

String.Empty trebuie să fie utilizat în locul șir gol (SA1122: UseStringEmptyForEmptyStrings).

Este necesar să folosiți aliasurile încorporate (int, șir în loc de Int32, String etc.) (SA1121: UseBuiltInTypeAlias).

Reguli de distingere

În acest grup, există multe reguli legate de tabulare și spații. Pe scurt, codul nu trebuie să conțină spații suplimentare, iar filele nu sunt permise (SA1027: TabsMustNotBeUsed).

Dezactivarea regulilor în cod

Pentru a nu verifica un cod pentru o anumită regulă, puteți folosi un atribut special:

  • Rule Rule - spațiul de nume al stilului StyleCop în care este declarat. De exemplu, Microsoft.StyleCop.CSharp.DocumentationRules;
  • Id-ul regulii este identificatorul regulii din shortname-ul formatului: longname. De exemplu, SA1600: ElementsMustBeDocumented;
  • Justificare - textul care va fi folosit pentru a explica motivul pentru care această sau acea regulă a fost omisă.

Dacă doriți să dezactivați toate regulile dintr-un anumit spațiu de nume, puteți face acest lucru:

StyleCop pentru Resharper

Cu excepția, de fapt, StyleCop, există încă un produs numit StyleCop pentru Resharper. După cum ați putea ghici din titlu, această unealtă servește la integrarea regulilor cu Resharper.

În general, utilizarea StilCop face codul dvs. frumos și simplu în ceea ce privește lizibilitatea și designul, ceea ce este foarte important pentru suportul consistent.







Articole similare

Trimiteți-le prietenilor: