Code
Smells තේරුම් ගැනීම සහ ඒවා වළක්වා ගන්නේ කෙසේද?
-
Code smells යනු ඔබේ කේතයේ ගැඹුරු ගැටළු පිළිබඳ දර්ශක
වේ. දෝෂ අවශ්යයෙන්ම නොවුනත්, ඒවා නඩත්තු දුෂ්කරතා, කියවීමේ හැකියාව අඩු වීම සහ තාක්ෂණික ණය වැඩි වීමට
හේතු විය හැකි දුර්වල නිර්මාණ තේරීම් යෝජනා කරයි. කේත සුවඳ කලින් හඳුනා ගැනීම සහ ආමන්ත්රණය
කිරීම කේත ගුණාත්මකභාවය වැඩි දියුණු කරන අතර දිගුකාලීන ව්යාපෘති සාර්ථකත්වය සහතික
කරයි.
-
මෙම ලිපිය Code smells යනු කුමක්දැයි පැහැදිලි කරයි, උදාහරණ සපයයි, සහ සාමාන්ය ක්රමලේඛනයේදී සහ Arduino
සංවර්ධනයේදී ඒවා වළක්වා ගැනීමට උපදෙස් ලබා දෙයි.
-
Code smells යනු කුමක්ද?
Code smells යනු ඔබේ කේතය සැලසුම් කිරීමේදී හෝ ක්රියාත්මක කිරීමේදී
යම් වැරැද්දක් සිදුවිය හැකි බවට ලකුණකි. මෙම ගැටළු කේතය තේරුම් ගැනීමට, දිගු කිරීමට හෝ දෝෂහරණය කිරීමට අපහසු කරයි. දුර්වල
සැලසුම් කිරීම, කඩිනම් සංවර්ධනය හෝ කේතනය කිරීමේ හොඳම පිළිවෙත්
පිළිපැදීම නොමැතිකම පොදු හේතු අතර වේ.
-
පොදු Code smells සහ උදාහරණ
1. දිගු ශ්රිත
Smell: අධික ලෙස දිගු ශ්රිත තේරුම් ගැනීමට සහ දෝෂහරණය කිරීමට අපහසු වේ.
උදාහරණය:
void
handleSensorAndDisplayData() {
// Read sensor
// Process data
// Update display
// Handle errors
// Log data
// Send over network
}
-
විසඳුම: ශ්රිතය කුඩා,
නාභිගත ශ්රිතවලට කඩා දමන්න.
-
void handleSensorAndDisplayData() {
readSensor();
processData();
updateDisplay();
}
-
2. අනුපිටපත් කේතය
Smell: එකම කේතය ස්ථාන කිහිපයක පිටපත් කර ඇලවීම නඩත්තු බර වැඩි කරයි.
උදාහරණය:
if (sensorValue >
100) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
-
3. අදහස් ඕනෑවට වඩා
Smell: අදහස් ඕනෑවට වඩා අවශ්ය කරන කේතය ස්වයං පැහැදිලි කිරීමක් නොවිය හැකිය.
උදාහරණය:
// Turn on the LED
digitalWrite(ledPin, HIGH);
// Wait for 1000ms
delay(1000);
// Turn off the LED
digitalWrite(ledPin, LOW);
-
විසඳුම: අදහස් දැක්වීමේ අවශ්යතාවය අඩු කිරීම සඳහා පැහැදිලි, අර්ථවත් විචල්ය සහ ශ්රිත නම් භාවිතා කරන්න.
-
turnOnLED();
delay(1000);
turnOffLED();
-
4. දෘඪ-කේතගත අගයන්
Smell: කේතය තුළ කෙලින්ම මැජික් අංක හෝ නූල් භාවිතා කිරීම එය අඩු නම්යශීලී කරයි.
උදාහරණය:
if (temperature > 37.5) {
alert();
}
-
විසඳුම: පැහැදිලි බව සහ නඩත්තු කිරීමේ හැකියාව සඳහා නියතයන් හෝ විචල්යයන් භාවිතා
කරන්න.
-
const float feverThreshold = 37.5;
if (temperature > feverThreshold) {
alert();
}
-
5. විශාල පන්ති(Classes)
Smell: ඕනෑවට වඩා වගකීම් ඇති පන්ති තනි වගකීම් මූලධර්මය (SRP) උල්ලංඝනය කරයි.
උදාහරණය:
class SmartHome {
void controlLights();
void controlThermostat();
void monitorSecurity();
void manageSchedules();
}
-
විසඳුම: කුඩා, අරමුණු-නිශ්චිත පන්තිවලට බෙදන්න.
class LightController {};
class ThermostatController {};
class SecurityMonitor {};
class ScheduleManager {};
-
6. අධික If-Else දාම
Smell: if-else හෝ switch ප්රකාශනවල දිගු දාමයන් කේතය අනුගමනය කිරීම දුෂ්කර කරයි.
උදාහරණය:
if (command == "start") startMotor();
else if (command == "stop") stopMotor();
else if (command == "pause") pauseMotor();
else if (command == "resume") resumeMotor();
-
විසඳුම: ශ්රිත දර්ශක හෝ ශබ්දකෝෂයක් වැනි සිතියම්කරණ ප්රවේශයක් භාවිතා කරන්න.
-
typedef void (*CommandFunc)();
std::map<String, CommandFunc> commands = {
{"start", startMotor},
{"stop", stopMotor},
{"pause", pauseMotor},
{"resume", resumeMotor}
};
commands[command]();
-
7. අධික සංකීර්ණ තර්කනය
Smell: සංකීර්ණ, කැදැලි තර්කනය කියවීමට සහ දෝෂහරණය කිරීමට අපහසු විය හැකිය.
උදාහරණය:
if ((temp > 30 && humidity < 40) || (rainDetected &&
windSpeed > 20)) {
takeAction();
}
-
විසඳුම: කොන්දේසි සරල කිරීම සඳහා උපකාරක ශ්රිත භාවිතා කරන්න.
-
if (isHotAndDry() || isStormy()) {
takeAction();
}
-
Code Smells වළක්වා ගන්නේ කෙසේද?
ඔබේ කේතය සැලසුම් කරන්න: ලිවීමට පෙර නිර්මාණය කිරීමට කාලය ගත කරන්න. විශාල කාර්යයන් කුඩා, කළමනාකරණය කළ හැකි සංරචක වලට බෙදන්න.
හොඳම පිළිවෙත් අනුගමනය කරන්න: DRY (ඔබම නැවත නොකරන්න) සහ SRP (තනි වගකීම් මූලධර්මය) වැනි මූලධර්මවලට ඇලී සිටින්න.
නිතිපතා ප්රතිනිර්මාණය කරන්න: තර්කනය සරල කිරීමෙන් සහ අතිරික්ත කොටස් ඉවත් කිරීමෙන් කේතය අඛණ්ඩව වැඩි දියුණු කරන්න.
ස්වයං පැහැදිලි කිරීමේ කේතය ලියන්න: කේතය බුද්ධිමය කිරීමට විස්තරාත්මක විචල්ය සහ ශ්රිත නම් භාවිතා කරන්න.
උත්තෝලන මෙවලම්: code smell ස්වයංක්රීයව හඳුනා ගැනීමට Lint සහ ස්ථිතික විශ්ලේෂණ මෙවලම් භාවිතා කරන්න.
-
නිගමනය
පිරිසිදු, නඩත්තු කළ හැකි සහ පරිමාණය කළ හැකි කේතයක් ලිවීම සඳහා code smells හඳුනා ගැනීම සහ ආමන්ත්රණය කිරීම ඉතා වැදගත් වේ. ඔබේ කේතය නිතිපතා සමාලෝචනය
කිරීමෙන්, නැවත සකස් කිරීමෙන් සහ කේතීකරණ මූලධර්මවලට
අනුගත වීමෙන්, ඔබට ගැටළු වළක්වා ගත හැකි අතර ඔබේ ව්යාපෘති
ශක්තිමත් සහ අනාගතයට ඔරොත්තු දෙන බව සහතික කළ හැකිය.
-
තාමත් අපේ group එකේ නැත්තන් group එකට සෙට් වෙන්න :
https://www.facebook.com/groups/paperclipx
මේ group එකේ දාන දේවල් හොඳයි කියල හිතෙනවනම් ඕගොල්ලොන් ගේ යාලුවන්වත් group එකට එකතු කරන්න !