Programmalıq támiynat qurılması hám evolyuciyası / 6-ameliy_PTQE
.pdf
6-ámeliy jumıs. Programmalıq támiynattı islep shıǵıwda standartlardan paydalanıw.
Jumıstıń maqseti: Programmalıq injeneriyada "Kod jazıw standartları" (Coding Standards) hám "Kelisiwler" (Conventions) menen tanıw. C++ tilindegi Google C++ Style Guide yamasa basqa ataqlı standartlar tiykarında kodtı formatlaw, ataw (Naming) hám hújjetlestiriw (Documentation) kónlikpelerin qáliplestiriw. "Linter" hám "Formatter" qurallarınan paydalanıwdı úyreniw.
Teoriyalıq bólim: Standartlar kodtıń oqılıwın hám bir tegisligin támiyinleydi.
1.Ataw (Naming):
CamelCase: `myVariable` (Java, C++ lokal).
PascalCase: `MyClass` (Klasslar).
Snake_case: `my_variable` (Python, C++ STL).
Screaming Snake: `MAX_SIZE` (Konstantalar).
2.Formatlaw: Sheginiw (Indentation - 2 yamasa 4 probel), Qawsırmalar (`{` jańa qatarda yamasa sol qatarda).
3.Kommentariyler: "Ne" emes, "Ne ushın" ekenin jazıw.
4.Hújjetlestiriw: Doxygen (C++), Javadoc (Java) standartı.
ÁMELIY BÓLIM:
Standartsız hám Standartlı kodtı salıstıramız.
1-mısal: Ataw (Naming Conventions)
Kod (Jaman - Standartsız):
class student_info { public:
int Val;
void Get_val() { cout << Val; }
};
// `student_info` kishi hárip (klass), `Val` úlken (ózgeriwshi),
`Get_val` aralas.
Kod (Jaqsı - PascalCase & CamelCase): class StudentInfo { // Klass - PascalCase private:
int studentValue; // Atribut - camelCase public:
void getValue() { // Metod - camelCase
cout << studentValue;
}
};
2-mısal: Formatlaw hám Qawsırmalar
Kod (Jaman):
if(x>0){a=b+c;
}else{ a=b-c;}
// Tıǵız, oqıw qıyın.
Kod (Jaqsı - K&R Stili):
if (x > 0) { a = b + c;
} else {
a = b - c;
}
// Bos orınlar (space) hám sheginiwler (indentation) durıs qoyılǵan.
3-mısal: Konstantalar hám "Sıyqırlı sanlar"
Kod (Jaman): int arr[10];
for(int i=0; i<10; i++) { ... }
Kod (Jaqsı):
const int MAX_SIZE = 10; // Konstanta - Úlken hárip int arr[MAX_SIZE];
for (int i = 0; i < MAX_SIZE; i++) { ... }
4-mısal: Hújjetlestiriw (Doxygen)
Funkciyaǵa standart kommentariy qosıw.
Kod:
/**
*@brief Eki sandı qosadı.
*Bul funkciya overflow (tasıp ketiw) jaǵdayın tekseremeydi.
*@param a Birinshi san.
*@param b Ekinshi san.
*@return int Nátiyje.
*/
int add(int a, int b) { return a + b;
}
5-mısal: Linter menen tekseriw (Simulyaciya)
Linter (mısalı, Clang-Tidy) kodtı tekserip, eskertiw beredi.
Kod:
void func() {
int *p = new int(5);
//...
//Linter: "Memory leak: 'p' is never deleted."
}
Dúzetiw:
void func() {
int *p = new int(5); // ...
delete p;
}
ÁMELIY TAPSÍRMALAR
1-tapsırma: Kodtı qayta formatlaw (Refactoring).
Tómendegi kodtı Google C++ Style boyınsha (Klasslar PascalCase, metodlar camelCase, ózgeriwshiler snake_case yamasa camelCase) dúzetiń:
class my_data {
int X;
public:
void CALCULATE_AREA() { ... }
};
2-tapsırma: Kommentariy jazıw.
`double solveQuadratic(double a, double b, double c)` funkciyasına Doxygen stilinde (brief, param, return) hújjet jazıń.
3-tapsırma: Konstantalardı standartlastırıw.
Kodtaǵı `3.14` hám `9.8` sanların `const double PI` hám `const double G` dep ózgertiń. Ataw stili `SCREAMING_SNAKE_CASE` bolsın.
4-tapsırma: Sheginiwlerdi (Indentation) dúzetiw.
Tómendegi kodtı 4 probel sheginiw menen (Visual Studio stili) jazıń:
void test(){
if(true){
while(false){
cout<<"Hello";
}}}
5-tapsırma: "Hungarian Notation" (Tariyxıy analiz).
Burın `iCount`, `strName`, `fPrice` (tipi atında: i-int, str-string) dep jazılatuǵın edi.
Házirgi standartlar bunı ne ushın "jaman" dep esaplaydı? (IDE tipti kórsetedi).
Bul stildi házirgi `count`, `name`, `price` stiline ózgertiń.
