Стандарти угоди щодо призначення імен - HTML, CSS, JavaScript, Perl, PHP, MySQL

Стандарти угоди щодо призначення імен

Перш ніж обговорювати питання, пов'язані з конструюванням імен для різних елементів вашого додатка, пригадаємо стандарти, які є до теперішнього часу.

Угорська нотація

Угорську нотацію використовує більшість розробників на С і C++ (включаючи і М1сго5ой'івців). Ця система формування імен створена співробітником Microsoft Чарльз Сімоні (Charles Simonyi). На початку 1980-х Microsoft прийняла на озброєння систему, основу якої взято з докторської дисертації Сімоні "Meta-Programming: A Software Production Method" ("Мета-програмування: спосіб виробництва програмного забезпечення").

Згідно з угорською нотацією до імені змінної додається приставка, що показує її тип. Проте чи кожен тип має свій стандартний префікс. Крім того, поява нових мов та нових типів потребує створення нових приставок. Тому не дивно, що згодом ми зіштовхуватимемося з префіксами, які ніколи нам раніше не зустрічалися. (Між іншим, термін "Угорська нотація" як би показує, що префікси роблять змінні такими, ніби вони написані мовою, відмінною від англійської; до того ж пан Сімонії родом з Угорщини.)

Можливо, найважливішою публікацією, що агітує на користь угорської нотації, була перша книга, яку прочитав майже кожен розробник під Windows та OS/2. Це книга Чарльза Петцольда (Charles Petzold) "Programming Windows" (Microsoft Press), в якій один із діалектів угорської нотації застосовується у всіх демонстраційних програмах. Більш того, і Microsoft користується цією системою позначень у власних технологіях. З MFC народилася чергова серія специфічних для C++ префіксів, продовживши життя угорської нотації. То чому б інам не продовжити застосування угорської нотації? Тим більше що ця система позначень зручна в ситуаціях, де бажано знати тип та/або область видимості змінної, що застосовується. Однак, як ви дізнаєтеся в розділі 4, всі типи С# є об'єктами і засновані на .NET-класі System.Object. Тому всі змінні мають основний набір функціональних можливостей та поведінкових характеристик. Тому угорська нотація серед .NET втрачає свою привабливість.

ПРИМІТКА
Стилі "Паскаль" та "верблюд"

Розробники С# не пов'язані "жорстким" стандартом, але з вже створеного ними видно, що вони випливають з набору умовних позначень, придуманих співробітником Microsoft Робом Кероном (Rob Caron), який запропонував при позначенні змінних використовувати суміш технік "Паскаль" і "верблюд". У статті "Coding Techniques and Programming Practices" ("Технології та практика програмування"), що є в MSDN (http://msdn.microsoft.com/library/techart/cfr.htm), він пропонує для імен методів застосовувати техніку "Паскаль" ", де перший символ зображується великою літерою, і для імен змінних - техніку "верблюд". У демо-додатках цієї книги я так і поступаю. Оскільки в С# є не тільки змінні та методи, у наступних розділах ви знайдете перелік інших елементів мови та відповідних нотацій.

ПРИМІТКА
Простір імен

Назва простору імен повинна відповідати імені вашої компанії або назві програми, і перша літера повинна бути великою, наприклад, Microsoft. Якщо ж ви займаєтеся поширенням компонентів ПЗ, назвіть простір імен верхнього рівня іменем вашої компанії, а для кожного продукту створіть простір імен наступного рівня зі своїми вкладеними типами, виключивши цим конфлікти імен з іншимипродуктами. Приклад тому є у .NET Framework SDK: Microsoft. Win32. Така техніка призводить до нескінченних ланцюжків імен, проте завдяки директиві using користувачам вашого коду не доведеться вводити їх повністю. Так, якщо компанія Trey Research поширює два продукти - електронну таблицю (grid) та базу даних (database), простори імен матимуть назви Тгеу-Research.Grid та Trey Research. Database.

Оскільки об'єкти є ніби живими, дихаючими організмами, наділеними деякими здібностями, у назвах класів застосовуйте іменники, які описують предметну область класу. Якщо клас представляє більш загальне поняття (тобто не визначається лише специфікою предметної області), наприклад, під час створення типу SQL-рядка, використовуйте техніку " Паскаль " .

Застосовуйте техніку Паскаль для всіх методів. Від методів очікують виконання певної роботи. Тому нехай в іменах методів відображається те, що вони роблять. Наприклад, Printlnvoice або OpenDatabase.

Якщо методи передбачається використовувати в булевських виразах, додайте до імені методу дієслово, що вказує на те, що метод робитиме. Наприклад, якщо метод повертатиме булевське значення, яке визначається блокуванням робочої станції, назвіть метод на зразок IsWorkStationLocked. Тоді при використанні методу в умовному операторі його призначення буде зрозумілішим, наприклад:

Аргументи методу

Застосовуйте техніку Паскаль для всіх аргументів. Називайте аргументи виразно, щоб під час роботи IntelliSense користувач міг відразу зрозуміти, навіщо потрібен кожен аргумент.

Інтерфейси

Застосовуйте техніку Паскаль для всіх інтерфейсів. Стало традицією додавати до імені інтерфейсу прописну букву "I", наприклад, Кот-рагаЫе. (Ця угода, мабуть,єдине в С#, хоч якось відповідне угорській нотації.)

Багато розробників застосовують одні й самі правила формування імен й у інтерфейсів й у класів. Проте між цими елементами існує фундаментальна філософська відмінність. Класи є інкапсуляцією даних і функцій, що працюють з цими даними. Інтерфейси ж становлять поведінку об'єкта. Роблячи реалізацію інтерфейсу, ви заявляєте про готовність якогось класу продемонструвати таку поведінку. Тому в іменах інтерфейсів прийнято використовувати прикметники. Наприклад, інтерфейс, що оголошує методи впорядкування даних, можна назвати так: ISerializable.

Члени класу

Для розробників на С# це, мабуть, найнеприємніше питання. Ті, хто працював з C++ та MFC, звикли додавати до імен членів приставку т_. Однак я раджу вам звернутися до техніки "верблюда", в якій перша буква не є великою. Якщо у вашого методу є аргумент Foo, то відповідно до цієї техніки ви зможете відрізнити його від внутрішнього уявлення змінної, створивши внутрішній член/оо.

Не слід додавати до імені змінної ім'я класу. Нехай, наприклад, є клас Author. Можна створити член цього класу з ім'ям Author-Name, але його повне ім'я буде Author.AuthorName. Тоді як достатньо назвати цей член просто Name.

Підведемо підсумки

У структурі програм на С# закладені кошти, які роблять програми надійними і простими у написанні, зокрема простір імен та директива using. А правила формування імен, що включають особливі угоди про регістри букв, можуть зробити програми легшими для розуміння та подальшого супроводу.