Чудех се как точно да демонстрирам някои лоши практики в именуването на идентификатори (именуване на променливи, класове, функции). И ето че открих чудесен пример - една програма, която беше пример от учебник, който целеше да ми покаже основите на обектно-ориентираното програмиране. Страшното беше, че дори и в неграмотно състояние виждах, че това е просто бъркотия!
Просто гледайте.
- #include <iostream>
- using namespace std;
- class Student {
- public:
- char Ime[11];
- short Ocenki[10];
- float Uspeh;
- void SrUspeh();
- // ...
- };
- void Student::SrUspeh()
- {
- float s = 0;
- for (int i = 0; i<10; i++) s += Ocenki[i];
- Uspeh = s / 10;
- }
- class newStud {
- // ...
- };
- void main()
- {
- char KodOp; int BrLica = 0; Student Grupa[10]; newStud newGrupa[10];
- do {
- cin >> KodOp;
- // ...
- } while (KodOp != '0');
- }
Нека игнорираме:
- използването на именното пространство std
- public нивото на достъп на член-данните
- използването на char масив вместо std::string
- постинкрементацията на брояча във for цикъла
- декларирането на променливи от различен тип на 1 ред
- факта, че main() е от тип void, а не int, както е по конвенция
Нека забравим всичко и това и се съсредоточим само върху имената на идентификаторите.
Бих казал, че единствено името на класа Student си е OK, но това, предполагам, е абсолютна случайност.
1. Не използвайте български имена!
BAD
- char Ime[11];
- short Ocenki[10];
- float Uspeh;
GOOD
- char name[11];
- short grades[10];
- float average;
Ако бяхте от друга страна и не знаехте български език - каква щеше да е реакцията ви когато ви сервират първия вариант? Просто използвайте имена на английски. Английският е единственият универсален език в света на програмирането.
2. Не съкращавайте имената!
BAD
- char KodOp;
- void SrUspeh();
- int BrLica = 0;
- float s = 0;
GOOD
- char operationCode;
- void getAverage();
- int numberOfStudents = 0;
- float sum = 0;
Няма нужда от съкращения в повечето случаи. По-ценно е кодът да е лесно разбираем, отколкото да е кратък. Постоянно виждам в примери променливи с имена по една буква. Понякога това е допустимо - ако искаме да илюстрираме някаква концепция от програмирането или пък да приложим някаква математическа формула, но в повечето случаи няма нужда от това.
Също така бих казал че изключение могат да направят например променливите за брояч във for цикъл, които имат малък обхват и няма да затруднят съществено четимостта на кода, тъй като съществуват единствено в цикъла.
3. Спазвайте конвенциите и бъдете постоянни!
Първоначално мислех да напиша за това, че обикновено класовете започват с главна буква, но проблемът се свежда до нещо по-общо - просто спазвайте конвенциите на езика, с който програмирате!
За всеки език е различно и задължение на програмиста да се информира за конкретните конвенции.
Още по-важно - бъдете постоянни. Ако ще пишете camelCase имена на променливи - добре, но се опитвайте да използвате този стил за всички променливи.
---
Това май са най-важните правила, които научих до този момент относно именуването... а сега отивам да бомбардирам всеки, който все още декларира променлива с име "br".
Няма коментари:
Публикуване на коментар