ืกืืงืืืืืืช ืืืจืืืืช ืืื ืืื ืชืืื ื ืืืื ื ืฉืืืื ืืช ืืืืคื ืืืืจืื ืฉื ืชืืื ืืช ืขื ืืื ื ืืชืื ืืจืืืช ืืืงืจื ืฉืื. ืื ืืืื ืืืขืื ืืื ืืกืช ืชืืื ื.
ืื ืืฉืื ืืืืืื ืืืชืื ืชืื ืืืืืื ืฉืืื ืืกืคืง ืชืืื ืืช ืขื ืืืจืืืืช ืืงืื ืืืกืืืข ืืืืืื ืืขืืืช ืคืืื ืฆืืืืืืช ืืงืฉืืจืืช ืืชืืืืงื ืืืืืืงืืช.
ืืืกืืกื, CC ืืืืฉื ืขื ืกืื ืืจืฃ ืืจืืืช ืืืงืจื ืฉื ืชืืื ืืช, ืืืฉืจ ืฆืืชืื ืืืืฆืืื ืืฆืืจืืช ืืืืืืช ืืืกืคืจ ืืงืฆืืืช ืืชืืจ ืืช ืืจืืืช ืืืงืจื ืืื ืืื.
SMART TS XL
ืขืืืจ ืื ืืฉืืื ืืืืจืืืืช ืฆืืงืืืืืืช, ืืืืขื ืืช ืืืืฆืืขืื ืืืื ืืข ืืืืื ื ืกืชืจืื
ืืื ืขืืโฆืืื ืช ืืืจืืืืช ืฆืืงืืืืืืช (CC)
ืืื ืืืจืืืืช ืฆืืงืืืืืืช (CC)?
ืกืืงืืืืืืช ืืืจืืืืช (CC) ืืื ืืื ืชืืื ื ืืืฉืืฉ ืืืืืืช ืืืืจืืืืช ืฉื ืืจืืืช ืืืงืจื ืฉื ืชืืื ืืช. ืืืฆื ืขื ืืื Thomas J. McCabe ืืฉื ืช 1976, CC ืืืืช ืืช ืืกืคืจ ื ืชืืื ืืืืฆืืข ืืขืฆืืืืื ืืชืื ืคืื ืงืฆืื ืื ืชืืื ืืช. ืื ื ืงืืืช ืืืืื, ืืืื ืืฆืืจืืช ืืืชื ืืช (ืื, ืืืจืช, ืืชื) ืืืืืืืช (for, while), ืชืืจืืช ืืืืจืืืืช ืืื. ืืืื ืขืืืจ ืืืคืชืืื ืืืืื ืืช ืืกืืืื ืื ืืคืืื ืฆืืืืืื ืืงืฉืืจืื ืืงืืข ืงืื, ืืืื ืืกืืืจืืช ืืคืืืื ืืจืืช ืืืืืฅ ืื ืืจืฉืช ืืืืืงื ืืชืืืืงื. ืฆืืื CC ืืืื ืืืชืจ ืืฆืืืข ืขื ืื ืฉื ืืจืฉืื ืืืชืจ ืืงืจื ืืืืงื, ืื ืฉืืืคื ืืช ืืงืื ืืงืฉื ืืืชืจ ืืชืืืืงื ืื ืืื ืืืชืจ ืืฉืืืืืช.
ืื ืืกืื ืืืืฉืื CC ืืื: , ืืืฉืจ ืืืืฆื ืืช ืืกืคืจ ืืงืฆืืืช, ืืกืคืจ ืืฆืืชืื ืืืกืคืจ ืืจืืืืื ืืืืืืจืื ืืืจืฃ ืืจืืืช ืืืงืจื. ืืืจื ืืื, ืขืจื CC ืฉื 10 ืื ืคืืืช ื ืืฉื ืื ืืืื. ืขืจืืื ืืขื ืกืฃ ืื ืืฆืืืขืื ืขื ืืฆืืจื ื-refactoring ืืื ืืฉืคืจ ืืช ืืงืจืืืืช ืืืืืืงื.
public void handleRequest(boolean isAdmin, boolean isUser, boolean isGuest) {
if (isAdmin) {
System.out.println("Admin Access Granted");
} else if (isUser) {
System.out.println("User Access Granted");
} else if (isGuest) {
System.out.println("Guest Access Limited");
} else {
System.out.println("Access Denied");
}
}
ืืงืื ืื "ื ืืฉ ื ืงืืืืช ืืืืื ืืจืืืืช, ืืืชืืฆืื ืืื ืืืจืืืืช ืฆืืงืืืืืืช ืฉื 4. ืืืฉืืขืืช ืืื ืฉืืคืืืช ืืจืืขื ืืงืจื ืืืืงื ื ืืจืฉืื ืืื ืืืืืื ืืืกืื ืืื ืฉื ืื ืชืื.
ืืืืข ืืืจืืืืช ืฆืืงืืืืืืช ืืฉืืื
ืืืจืืืืช ืฆืืงืืืืืืช (CC) ืืื ืงืจืืืืช ืืืืืื ืฉืืื ืืฉืคืืขื ืืฉืืจืืช ืขื ืืืืืช ืืชืืื ื, ืืชืืืืงื ืืืืืฅ ืืืืืงื. ืขืจืื CC ืืืืืื ืืฆืืืขืื ืืจืื ืขื ืงืื ืืืจืื ืฉืงืฉื ืืืืื, ืืืขื ืืืชืจ ืืฉืืืืืช ืืืืชืืจ ืืืืืงื ืืกืืืืช. ืืขืืืช ืืืช, ืืืจืืืืช ื ืืืื ืืืชืจ ืืงืืืช ืงืื ืฉืงื ืืืชืจ ืืชืืืง, ืืคืืืชื ืืืืืช ืืื ืืื ืืืฉืคืจืช ืืช ืืืืื ืืช ืืืืืืช. ืืืืืช CC ืืืคืฉืจืช ืืฆืืืชื ืคืืชืื ืืืขืจืื ืืช ืืืฆืืืืช ืฉื ืืกืืก ืืงืื ืฉืืื, ืืืืืืื ืฉืืชืืื ื ืชืืฉืืจ ืืืชื ื ืขื ืืืกืคืช ืชืืื ืืช ืืืฉืืช.
ืืชืจ ืขื ืื, CC ืืืื ืชืคืงืื ืืืจืืข ืืชืื ืื ืืืืืงืืช. ืืื ืงืืืข ืืช ืืืกืคืจ ืืืื ืืืื ืฉื ืืงืจื ืืืืงื ืื ืืจืฉืื ืืืฉืืช ืืืกืื ืกื ืืฃ ืืื. ืืืื ืืืืืืืืื ืืืฉืืืืื ืืฆืื ืืจืืช CI/CD ืืืืืื ืื ืืจ ืืืืคื ืจืฆืืฃ ืงืืขื CC ืืงืื ืืื ืืืืจืืื ืืกืฃ ืืืืืจ ืืจืืฉ. ืืืฉื ืคืจืืืงืืืืืช ืื ืืืืืื ืฉืืืืจืืืืช ืื ืืืืช ืืฉืื ืืืงืื ืืชืืืื ืืคืืชืื, ืืื ืขืช ืคืืืื ืคืืื ืฆืืืืืื ืืืคืืชืช ืขืืืืืช ืืจืืืืช ืืืื.
pipeline {
agent any
stages {
stage('Cyclomatic Complexity Check') {
steps {
sh 'static-analysis-tool --check-complexity --threshold 10'
}
post {
failure {
error 'Pipeline failed due to high cyclomatic complexity.'
}
}
}
}
}
ืืืืืื ืฉื Jenkins Pipeline ืืขืื ืืืืืื ืืืฆื ื ืืชื ืืืฆืข ืืืืงืืช CC ืืืืืืืืืช, ืืขืฆืืจ ืืช ืืคืจืืกื ืฉื ืงืื ืืืจืื ืืื ืืฉืืืจื ืขื ืชืงื ื ืืืืืช ืชืืื ื.
ืืืฆื CC ืืฉืคืืขื ืขื ืืืืงืืช ืืชืืืืงื
ืืืจืืืืช ืฆืืงืืืืืืช (CC) ืืฉืคืืขื ืขื ืชืืืื ืืืืืงื ืขื ืืื ืงืืืขืช ืืกืคืจ ืืงืจื ืืืืืงื ืืืจืืฉืื ืืืืกืื ืื ื ืชืื ืืืฆืืข. ืขืจืื CC ืืืืืื ืคืืจืืฉื ืฉื ืืจืฉืช ืืืืงืืช ืืงืืคืืช ืืืชืจ, ืื ืฉืืืืื ืืขืืืืืช ืืืืืจืืช ืืืืืืืจื ืืืืงื ืืจืืืื ืืืชืจ. ืื ืืกืฃ, ืงืฉื ืืืชืจ ืืชืืืง ืงืื ืืืจืื ืืืืืื ืฉืืื ืืืืื ืืช ืืกืืืจืืช ืืืื ืกืช ืคืืืื ืืืืื ืฉืื ืืืื ืขืชืืืืื. ืืคืืชืช CC ืืืืฆืขืืช Refactoring ืื ืจืง ืืคืฉืืช ืืช ืืืืืงืืช ืืื ืื ืืืคืืช ืืช ืืกืืก ืืงืื ืืืชืืื ืืฉืื ืืืื.
ืฉืื ืื ืืกืืจืืืืืช ืืืื ืคืืจืืง ืคืื ืงืฆืืืช ืืืืืืช, ืฉืืืืฉ ืืืื ืื ืืืชื ืื ืคืฉืืืื ืืืชืจ ืืืืฉืื ืืคืืกื ืขืืฆืื ืืื ืืคืืก ืืืกืืจืืืื ืืืืืื ืืืคืืืช ืืฉืืขืืชืืช ืืช ื-CC. ืคืจืงืืืงืืช ืืื ืืฉืคืจืืช ืืช ืืืืจืืช ืืงืื ืืืืืขืจืืช ืฉืืืืืช ืคืืื ืฆืืืืืืช. ืืื ื ืืชืื ืงืื ืกืืื ืืืืืืืืื ืืืืืื ืืืืืืฅ โโืขื ืฉืื ืืืื ืืื, ืืืืืืืื ืฉืืคืืจ ืืืืืช ืืชืืื ืืืื ืืฉืืฉ ืืช ืืจืืืืช ืืขืืืื ืฉื ืืคืืชืื.
public int determineShippingCost(boolean expedited, boolean international, boolean heavy) {
if (expedited && international && heavy) return 100;
if (expedited && international) return 80;
if (international) return 60;
if (expedited) return 40;
return 20;
}
ืืคืื ืงืฆืื ืฉืืขืื ืืฉ CC ืฉื 5, ืืืฆืืื ืืช ืืฆืืจื ืืืืืฉื ืืงืจื ืืืืงื ืืคืืืช. ืืคืืืช ืงืื ืื ืืฉืืืืช ืงืื ืืช ืืืชืจ ืืฆืืฆื ืืช ื-CC, ืืืคืฉื ืืช ืืืืืงืืช ืืืชืืืืงื ืืืื.
ืืชืคืงืื ืฉื ื ืืชืื ืงืื ืกืืื ืื ืืืื CC
ืืื ื ืืชืื ืงืื ืกืืื ืืืื ืืื ืื ืืืื ืืืจืืืืช ืฆืืงืืืืืืช (CC). ืืืื ืืื ืืืฉืืื ืืืืืืืืช CC ืขืืืจ ืื ืคืื ืงืฆืื ืื ืืืืื, ืืืกืคืงืื ืชืืื ืืช ืืืื ืชืืืืื ืืืจืืืื ืืืืจืฉืื ืขืืืื ืืืืฉ. ืขื ืืื ืฉืืืื ื ืืชืื ืกืืื ืืฆืื ืืจืืช CI/CD, ืฆืืืชื ืคืืชืื ืืืืืื ืืืืืื ื ืืืืจ ืจืฆืืฃ ืฉื CC ืืืืจื ืื ืืืืืจ ืืื ืืชืืื ื. ืืชืจืืืช ืืืืืืืืืช ืืืืืขืืช ืืืคืชืืื ืขื ืืจืืื ืืกืคื CC, ืืืืคืฉืจืืช ืชืืงืื ืื ืืืื ืืืงืืืื ืฉืืืืช ืงืืืื ืืืืืฆืืช.
ืื ืืกืฃ, ืืื ื ืืชืื ืกืืื ืืฆืืขืื ืืฆืขืืช ืืืคืืชืช CC, ืืืื ืคืืฉืื ืืื ื ืืงืจื, ืืืฉืื ืืคืืกื ืขืืฆืื ืืคืืจืืง ืคืื ืงืฆืืืช ืืืืืืช. ืืืืืช ืืฉืื ืื ืืกืืืขืช ืืฉืืืจ ืขื ืืกืืก ืงืื ื ืงื, ืืคืืืชื ืืืืืช ืืื ืืื ืืืฉืคืจืช ืืช ืืืืืช ืืชืืืืงื ืืืืืืช ืฉื ืืชืืื ื. ืฉืืืื ืืืื ืืื ืืชืืืืื ืคืืชืื ืชืืื ืืืจืืืืช ืืคืจืืืงื ืืืืื ืืจืื ืืืฆืืฆื ืืืืฆื ืชืืืืงื ืขืชืืืืื.
pipeline {
agent any
stages {
stage('CC Management') {
steps {
sh 'static-analysis-tool --generate-cc-report cc-report.html'
}
post {
always {
archiveArtifacts artifacts: 'cc-report.html', fingerprint: true
}
}
}
}
}
ืืชืกืจืื ืฉื Jenkins Pipeline ืืขืื ืืคืขืื ื ืืชืื ืงืื ืกืืื ืืื ืืืคืืง ืืื CC, ืฉืืืจ ืืืชื ืืืจืืืื ืื ืืืืจ ืจืฆืืฃ. ืื ืืืืื ืฉืงืืคืืช ืืืืจืืืช ืื ืืืื ืืืจืืืืช ืืงืื.
ืืื ืช ืืืืจืืืืช ืืฆืืงืืืืืืช (CC) ืืื ืืกืืกืืช ืืคืืชืื ืชืืื ื ื ืืชื ืช ืืชืืืืงื, ืืืงื ืืืขืืื. ืขื ืืื ืืื ืืฃ ื ืืชืื ืงืื ืกืืื ืืฉืืืื ื ืืืื ืืืจืืืืช ืืฆืื ืืจืืช CI/CD, ืฆืืืชื ืคืืชืื ืืืืืื ืืืคืืืช ืกืืืื ืื, ืืืืขื ืืช ืืืืืงืืช ืืืฉืืืจ ืขื ืืกืืก ืงืื ื ืงื ืื ืืชื ืืืจืืื.
ืืื ืืืจืืืืช ืฆืืงืืืืืืช ืืื ืืื ืืืืืช?
ืืืืจื ืฉื ืืืจืืืืช ืฆืืงืืืืืืช
ืืืจืืืืช ืฆืืงืืืืืืช ืืื ืืื ืฉืืืื ืืช ืืืืจืืืืช ืฉื ืชืืื ืืช ืขื ืืื ืืืืืช ืืกืคืจ ืื ืชืืืื ืืืืชื ืชืืืืื ืืืืคื ืืื ืืืจื ืืจื ืงืื ืืืงืืจ. ืืื ืื ืคืืชื ืขื ืืื Thomas J. McCabe ืืฉื ืช 1976, ืืืกืืืข ืืืคืชืืื ืืืืื ืขื ืืื ืืืจืืืช ืชืืื ื ื ืชืื ื ืขื ืกืื ืืจืืืช ืืืงืจื ืฉืื. ืืื ืฉืืืืจืืืืช ืืฆืืงืืืืืืช ืืืืื ืืืชืจ, ืื ืืงืื ืืืชืืจ ืืืชืจ ืืืืื, ืืชืืืง ืืืืืืง. ืืืจืืืืช ืฆืืงืืืืืืช ืจืืืื ืืืช ืืืืืื ืืืฉืจ ืืขืจืืืื ืืช ืืกืืืื ืืืืืจืช ืคืืืื ืืืืื ืฉืื ืืืื ืื ืฉืืคืืจืื, ืืืืืื ืฉืงืื ืืืจืื ืืืืื ืืจืื ืืืืชืจ ืฉืืืืืช.
ืืืื ืืืืฉื ืืืืฆืขืืช ืืจืฃ ืืจืืืช ืืืงืจื ืฉื ืชืืื ืืช, ืืืฉืจ ืืฆืืชืื ืืืืฆืืื ืืืืงื ืงืื, ืืืงืฆืืืช ืืืืฆืืื ื ืชืืื ืืจืืืช ืืงืจื. ืื ืืกืื ืืืืจืืืืช ืฆืืงืืืืืืช ืืื: , ืืืฉืจ ืืื ืืกืคืจ ืืงืฆืืืช, ืืื ืืกืคืจ ืืฆืืชืื ืืืืืฆื ืืช ืืกืคืจ ืืจืืืืื ืืืืืืจืื. ืฆืืื ืืืจืืืืช ืฆืืงืืืืื ืฉื 10 ืืืื ื ืืฉื ืืืจื ืืื ืืืืคืืืืื ืขืืืจ ืงืื ืืจ ืชืืืืงื.
public void processOrder(boolean isMember, boolean isHoliday) {
if (isMember) {
System.out.println("Apply member discount");
}
if (isHoliday) {
System.out.println("Apply holiday discount");
}
System.out.println("Process order");
}
ืืคืื ืงืฆืื ืฉืืขืื ืืฉ ืฉืชื ื ืงืืืืช ืืืืื ืขืฆืืืืืช, ืืืชืืฆืื ืืื ืืืจืืืืช ืฆืืงืืืืืืช ืฉื ืฉืืืฉ. ืื ืืฆืืืข ืขื ืฉืืืฉื ื ืชืืื ืืืฆืืข ืืืืืืืื ืฉืืฉ ืืืืืง ืืืืกืื ืืื.
ืืฉืืืืช ืืืืืช ืืืืจืืืืช ืืฆืืงืืืืืืช
ืืืืืช ืืืจืืืืช ืฆืืงืืืืืืช ืืืื ืืช ืืกืืืืช ืฉืื ืืช, ืืืื ืฉืืคืืจ ืืืืืช ืืงืื, ืคืืฉืื ืืชืืืืงื ืืฉืืคืืจ ืืืกืื ืืืืืงืืช. ืืืจืืืืช ืืืืื ืงืฉืืจื ืืขืืชืื ืงืจืืืืช ืืกืืืื ืืืืืจ ืืคืืืื ืืืขืืืืืช ืืืืงื ืืืืืืช ืืืชืจ. ืืคืชืืื ืืฉืชืืฉืื ืืืืจืืืืช ืฆืืงืืืืืืช ืืื ืืืืื ืืืืื ืงืืืช ื ืืชื ืืืืื ืืืฉื ืืช ืืกืืก ืงืื ืืืื ืืืื ืืก ืฉืืืืืช. ืงืื ืขื ืืืจืืืืช ื ืืืื ืืืชืจ ืืื ืืืจื ืืื ืืืื ืืืชืจ, ืืืืืื ืฉืืฉ ืื ืคืืืช ื ืชืืืื ืืืืืื ืฉืืืืืื ืืืืฆืจ ืชืืฆืืืช ืืืชื ืฆืคืืืืช.
ืืื ื ืืชืื ืงืื ืกืืื ืืืฉืืื ืืืืคื ืืืืืืื ืืช ืืืื ืืื ืืืืื ืืคืืชืื, ืืืกืคืงืื ืืฉืื ืืืื ืืืช ืขื ืืืืคื ืฉืื ืฉืื ืืืื ืืงืื ืืฉืคืืขืื ืขื ืืืืจืืืืช. ืืืืืื, ืืกืืืืช ืืื ืืืจืฆืื ืจืฆืืคื/ืคืจืืกื ืจืฆืืคื (CI/CD), ืืืื ืืื ืืืืืื ืืขืฆืืจ ืืช ืชืืืื ืืื ืืื ืื ืืืืจืืืืช ืืฆืืงืืืืืืช ืืืจืืช ืืกืฃ ืืืืืจ, ืื ืฉืืืืื ืฉืจืง ืงืื ืืจ ืชืืืืงื ืืฉืืื ืืืกืืก ืืงืื.
pipeline {
agent any
stages {
stage('Check Cyclomatic Complexity') {
steps {
sh 'static-analysis-tool --complexity-threshold 10'
}
post {
failure {
error 'Build failed due to high cyclomatic complexity.'
}
}
}
}
}
ืชืฆืืจืช Jenkins Pipeline ืื ืืืืืื ืืืฆื ื ืืชื ืืืคืื ืืืืงืืช ืืืจืืืืช ืฆืืงืืืืืืืช ืืืืืืืืืืช, ืืืื ืืข ืืงืื ืืืจืื ืืื ืืืชืงืื ืืืื ืืืืืืจ ืืคืืชืื.
ืืืฆื ืืืจืืืืช ืฆืืงืืืืืืช ืืฉืคืืขื ืขื ืืืืงืืช
ืืืืจืืืืช ืฆืืงืืืืืืช ืืฉ ืืฉืคืขื ืืฉืืจื ืขื ืืืืืงืืช ืืืืืื ืฉืืื ืงืืืขืช ืืช ืืืกืคืจ ืืืื ืืืื ืฉื ืืงืจื ืืืืงื ืื ืืจืฉืื ืืื ืืืกืืช ืืช ืื ืื ืชืืืื ืืืคืฉืจืืื ืืชืื ืชืืื ืืช. ืื ื ืชืื ืขืฆืืื ืืืืฆื ืชืจืืืฉ ืฉืฆืจืื ืืืืช ืืื ืืืืืื ืืืกืื ืชืคืงืืื ืืื. ืืื ืฉืืงืื ืืืจืื ืืืชืจ, ืืฉ ืฆืืจื ืืืืชืจ ืืงืจื ืืืืงื, ืื ืฉืืืืื ืืช ืืืื ืืืืฉืืืื ืื ืืจืฉืื ืืืืืงื ืืกืืืืช.
ืืคืืชืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืืืขืืช ืืช ืชืืืื ืืืืืงื ืขื ืืื ืืคืืชืช ืืกืคืจ ืืงืจื ืืืืืงื ืืืจืืฉืื. ืืืืืื, ืคืื ืงืฆืื ืขื ืฆืืื ืืืจืืืืช ืฉื 15 ืชืืจืืฉ ืืคืืืช 15 ืืงืจื ืืืื ืืื ืืืฉืื 100% ืืืกืื ื ืชืื. ืฉืืืืจ ืฉื ืคืื ืงืฆืื ืืื ืขื ืืื ืคืืจืืงื ืืฉืืืืช ืงืื ืืช ืืคืฉืืืืช ืืืชืจ ืืคืืืช ืืช ืฆืืื ืืืืจืืืืช, ืืืื ืืงืืื ืืช ืืืืฅ ืืืืืงื.
public int calculateShippingCost(boolean isInternational, boolean isExpress, boolean isFragile) {
if (isInternational && isExpress && isFragile) {
return 50;
} else if (isInternational && isExpress) {
return 40;
} else if (isInternational) {
return 30;
} else if (isExpress) {
return 20;
}
return 10;
}
ืืฉืืื ืื "ื ืืฉ ื ืงืืืืช ืืืืื ืืจืืืืช, ืืืชืืฆืื ืืื ืืืจืืืืช ืฆืืงืืืืืืช ืืืืื. ืฉืื ืื ืงืื ืื ืืฉืืืืฉ ืืืคืืก ืืกืืจืืืื ืื ืืืื ืื ืืืชื ืื ืคืฉืืืื ืืืชืจ ืืคืืืช ืืช ืฆืืื ืืืืจืืืืช ืืืช ืืืกืคืจ ืืืชืืื ืฉื ืืงืจื ืืืื ื ืืจืฉืื.
ืงืฉืจ ืืื ืืืจืืืืช ืฆืืงืืืืืืช ืืชืืืืงื
ืืืจืืืืช ืฆืืงืืืืืืช ืืฉืคืืขื ืืืืคื ืืฉืืขืืชื ืขื ืชืืืืง ืืงืื. ืืืจืืืืช ืืืืื ืืืคืืช ืืช ืืงืื ืืงืฉื ืืืชืจ ืืืื ื, ืื ืฉืืืืื ืืืืชืจ ืฉืืืืืช ืืืืื ืืฉืื ืืืื. ืืื ืฉืคืจืืืงืืื ืืืืื, ืืกืืกื ืงืื ืืชืืืืงืื ืืฆืืจื ืืจืืขื ืืืืืื ืืฆืืืจ ืืืืืช ืืื ืืื, ืืืืื ืืช ืืคืืชืื ืืขืชืืื. ืขื ืืื ืฉืืืจื ืขื ืืืจืืืืช ืฆืืงืืืืืืช ื ืืืื, ืฆืืืชืื ืืืืืืื ืฉืืงืื ืฉืืื ืืืฉืืจ ื ืืืฉ, ืืืืฉ ืืงื ืืืชืจ ืืฉืืคืืจ.
ืืืื ืื ืืชืื ืงืื ืกืืื ืืกืคืงืื ืชืืื ืืช ื ืืชื ืืช ืืคืขืืื ืืืื ืชืืืืื ืืืจืืืื, ืืืืืืฆืื ืขื ืืกืืจืืืืืช ืขืืืื ืืืืฉ ืืฉืืคืืจ ืืืืืช ืืชืืืืงื. ืืื ืืงืืช ืืื ืคืืจืืง ืคืื ืงืฆืืืช ืืืืืืช, ืฉืืืืฉ ืืืื ื ืืงืจื ืืจืืจืื ืืืงืคืื ืขื ืขืงืจืื ืืช ืงืื ื ืงืืื ืืืืืืช ืืืืจืื ืืฉืืขืืชืืช ืืช ืืืืจืืืืช. ืืืืืช ืืืืืืืืื ืืืืคืงืื ืขื ืืื ืืืื ืืื ืขืืืจืื ืืฆืืืชืื ืืชืขืืฃ ืชืืืืื ืืฉืืคืืจ, ืชืื ืืคืืชืช ืขืืืืืช ืชืืืืงื ืืจืืืืช ืืืื.
pipeline {
agent any
stages {
stage('Complexity and Maintainability Check') {
steps {
sh 'static-analysis-tool --output maintainability-report.html'
}
post {
always {
archiveArtifacts artifacts: 'maintainability-report.html', fingerprint: true
}
}
}
}
}
ืชืกืจืื Jenkins Pipeline ืื ืืืฆืจ ืืืืืกื ืืื ืชืืืืงื, ืืืฆืืข ืชืืื ืืช ืืชืืฉืืืช ืืืื ืืืืคื ืฉืื ืืืจืืืืช ืฆืืงืืืืืืช ืืฉืคืืขื ืขื ืืืจืืืืช ืืจืืืช ืืืืื ืฉื ืืกืืก ืืงืื.
ืืื ืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืืื ืืื ืืฉืคืืขื ืขื ืืืืืื ืฉืื ืื ืฉื ืคืืชืื ืืืื ืืช ืืื ืืืช ืชืืื ื ืืืืืืช ืืืืื. ืขื ืืื ืืื ืืฃ ืืื ื ืืชืื ืงืื ืกืืื, ืฆืืืชื ืคืืชืื ืืืืืื ืื ืื ืืืืคื ืืืื ืืช ืืืืจืืืืช, ืืืืืืื ืฉืืืืฉืืืื ืฉืืื ืืืฉืืจื ืืืื ืื, ื ืืชื ืื ืืชืืืืงื ืืงืืื ืืืืืงื.
ืืืฆื ื ืืชืื ืงืื ืกืืื ืืกืืืข ืืืคืืชืช ืืืืจืืืืช ืืฆืืงืืืืืืช
ืืืืื ืคืืื ืงืื ืืืจืืืื
ืืื ื ืืชืื ืงืื ืกืืื ืืฆืืืื ืื ืืืืืื ืงืืขื ืงืื ืืขืื ืืืจืืืืช ืฆืืงืืืืืืช ืืืืื. ืืืจืืืืช ืฆืืงืืืืืืช ืืืืืช ืืช ืืกืคืจ ืื ืชืืืื ืืืืชื ืชืืืืื ืืืืคื ืืื ืืืจื ืืจื ืชืืื ืืช, ืืฉืจ ืชืืืืช ืืฉืืจืืช ืืืืจืืืืช ืืงืื ืืืชืืืืงื. ืฆืืื ืืืจืืืืช ืืืื ืืืชืจ ืคืืจืืฉื ืืืชืจ ื ืชืืืื ืืืืืงื, ืื ืฉืืืคื ืืช ืืงืื ืืงืฉื ืืืชืจ ืืืื ื ืืืชืืืืงื. ืืื ื ืืชืื ืกืืื ืืืืื ืื ืืช ืชืืืื ืกืจืืงืช ืืกืืกื ืืงืื ืืื ืืืชืจ ืคืื ืงืฆืืืช, ืฉืืืืช ืื ืืืืงืืช ืฉืืื ืืืืจืืืืช ืืืจืืช ืืกืฃ ืืืืืจ ืืจืืฉ.
ืืืืืื, ืฉืงืื ืคืื ืงืฆืื ืขื ืืืืืืช ืืงืื ื ืืช ืืจืืืืช ืืืฆืืจืืช ืืืชื ืืช. ืืื ื ืืชืื ืงืื ืกืืื ืืืฉื ืืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืืชืืกืก ืขื ื ืงืืืืช ืืืืืื ืืืื ืืืกืื ืื ืคืื ืงืฆืื ืืืืจืืช ืืืืืืื ืืืืืืฆืช. ืขื ืืื ืืชื ืคืืจืื ืืืืชื ืฉื ืืืืจืื ืืืจืืืื, ืืืื ืืื ืขืืืจืื ืืืคืชืืื ืืืชืจ ืงืืขืื ืืขืืืชืืื ืืืืืจืืช.
public int calculateDiscount(int price, boolean isMember, boolean isHoliday) {
if (isMember) {
if (isHoliday) {
return price * 80 / 100; // 20% discount
} else {
return price * 90 / 100; // 10% discount
}
} else {
if (isHoliday) {
return price * 95 / 100; // 5% discount
}
}
return price;
}
ืืคืื ืงืฆืื ืฉืืขืื ืืฉ ื ืงืืืืช ืืืืื ืืจืืืืช, ืื ืฉืืืืื ืืืืจืืืืช ืฆืืงืืืืืืช ืืืืื ืืืชืจ. ืืื ื ืืชืื ืกืืื ืืืืืฉื ืืช ืืคืื ืงืฆืื ืืื ื-refactoring ืืื ืืฉืคืจ ืืช ืืงืจืืื ืืืชืืืืงื.
ืืชื ืืฆืขืืช ืืฉืืืืจ
ืืขืืจ ืืืืืื ืงืื ืืืจืื, ืืื ื ืืชืื ืงืื ืกืืื ืืฆืืขืื ืื ืืกืืจืืืืืช ืฉื ืขืืืื ืืืืฉ ืืืคืืชืช ืืืืจืืืืช ืืฆืืงืืืืืืช. Refactoring ืฉืืืคืช ืืื ืืช ืืืืฉ ืงืื ืงืืื ืืืื ืืฉื ืืช ืืช ืืืชื ืืืืช ืืืืฆืื ืืช ืฉืื, ืืฉืคืจ ืืช ืืงืจืืื ืืืืคืืืช ืืช ืืืืจืืืืช. ืืฆืขืืช ื ืคืืฆืืช ืืืืืืช ืคืืจืืง ืคืื ืงืฆืืืช ืืืืืืช ืืงืื ืืช ืืืชืจ ื ืืชื ืืช ืืฉืืืืฉ ืืืืจ, ืืืืคืช ืชื ืืื ืืงืื ื ืื ืืฉืืืืช ืคืืืืืืจืคืืืช ืืฉืืืืฉ ืืกืขืืคืื ืฉืืืจื ืืืืืจืืช ืืืงืืืืช.
ืืืฉื, ืืื ืฉืืืชืจ ืืืงืื calculateDiscount ื ืืชื ืืฉื ืืช ืืช ืืคืื ืงืฆืื ืืืืฆืขืืช ืกืขืืคื ืฉืืืจื ืืื ืืืคืืืช ืืช ืืงืื ืื ืืืฉืคืจ ืืช ืืืืืจืืช:
public int calculateDiscount(int price, boolean isMember, boolean isHoliday) {
if (isMember && isHoliday) return price * 80 / 100;
if (isMember) return price * 90 / 100;
if (isHoliday) return price * 95 / 100;
return price;
}
ืืจืกื ืืืืืฉืช ืื ืืคืืืชื ืืช ืืกืคืจ ื ืงืืืืช ืืืืืื, ืืืื ืืคืืืชื ืืช ืืืืจืืืืช ืืฆืืงืืืืืืช. ืืื ื ืืชืื ืกืืื ืืืืืื ืืืืืืฅ โโืืืืคื ืืืืืืื ืขื ืืคืืกืื ืืืื, ืืืขืืืจ ืืืคืชืืื ืืฉืืืจ ืขื ืืกืืกื ืงืื ื ืงืืื ืืืชืจ.
ืืืืคืช ืชืงื ื ืงืืืื
ื ืืชืื ืงืื ืกืืื ืืืื ืชืคืงืื ืืืจืืข ืืืืืคืช ืชืงื ื ืงืืืื ืืฉืืืจืื ืขื ืืืืจืืืืช ืืฆืืงืืืืืืช. ืฆืืืชื ืคืืชืื ืืืืืื ืืืืืืจ ืืื ื ืืชืื ืืื ืืกืื ืงืื ืืขืืื ืขื ืกืคื ืืืจืืืืช ืืืืืจืื ืืจืืฉ. ืืืืคื ืื ืืืืืื ืฉืจืง ืงืื ืืจ ืชืืืืงื ืื ืืชื ืืืืืงื ืขืืืจ ืืจื ืฆืื ืืจืืช ืืื ืืื.
ืืืืืื, ื ืืชื ืืืืืืจ ืฆืื ืืจ ืฉื Jenkins ืืืฉื ืืื ืืื ืื ืืืืืช ื ืืชืื ืกืืื ืืฆืืืขืื ืขื ืืืจืืืืช ืฆืืงืืืืืืช ืืืืื. ืชืจืืื ืื ืืืืื ืฉืืคืชืืื ืืืคืืื ืืืขืืืช ืืืจืืืืช ืืคื ื ืฉืืงืื ืืชืืื ืืขื ืฃ ืืจืืฉื.
pipeline {
agent any
stages {
stage('Static Code Analysis') {
steps {
sh 'static-analysis-tool --check-complexity --threshold 10'
}
post {
failure {
error 'Build failed due to high cyclomatic complexity.'
}
}
}
}
}
ืืืืื ืื ืืืืืื ืืืืคื ืืืืืืืืช ืฉื ืกืคื ืืืจืืืืช ืืฆืื ืืจืืช CI/CD, ืื ืฉืืืืื ืขืืืื ืขืงืืืช ืืชืงื ื ืงืืืื.
ืชืืืื ืืฉืืคืืจ ืืชืืื
ืฉืืคืืจ ืืชืืื ืืคืืชืื ืชืืื ื ืืกืชืื ืขื ืืฉืื ืงืืืข ืืฉืืคืืจืื ืืฆืืืจืื. ืืื ื ืืชืื ืงืื ืกืืื ืืกืคืงืื ืชืืื ืืช ืืืื ืืืช ืืืื ืืืืจืืืืช ืืฆืืงืืืืืืช, ืืืืคืฉืจืื ืืืคืชืืื ืืงืื ืืืืืืช ืืืฉืืืืช ืืืื ืขืืืื ืืืืฉ ืฉื ืงืื ืืืืคืืืืืืฆืื. ืฉืืืื ืืืื ืืื ืืฆืื ืืจืืช CI/CD ืืืืื ืฉืืืืงืืช ืืืจืืืืช ืืชืจืืฉืืช ืขื ืื ืืชืืืืืืช, ืืืื ืขืช ืืืืืช ืืืจืืืืช ืืืืจื ืืื.
ืืืืืื, ื ืืชื ืืืืืืจ ืืืื ืืืคืงืช ืืืืืช ืืคืืจืืื ืืืืจ ืื ืื ืืื, ืชืื ืืืืฉืช ืืืืจืื ืฉืืื ืืืืจืืืืช ืืืืจืช. ืฆืืืชืื ืืืืืื ืืืฉืชืืฉ ืืชืืื ืืช ืืืื ืืื ืืชืืื ืืคืขืืืช ืฉื ืขืืืื ืืืืฉ ืื ืกืงืืจืืช ืงืื ืืืชืืงืืืช ืืืคืืชืช ืืืืจืืืืช, ืชืื ืืืืืช ืชืืืืงื ืืืืื ืืจืื.
pipeline {
agent any
stages {
stage('Generate Complexity Report') {
steps {
sh 'static-analysis-tool --report complexity-report.html'
}
}
stage('Archive Report') {
steps {
archiveArtifacts artifacts: 'complexity-report.html', fingerprint: true
}
}
}
}
ืฆืื ืืจ ืื ืื ืจืง ืืืืฆืจ ืืื ืืืจืืืืช ืืื ืื ืฉืืืจ ืืืชื ืืืจืืืื ืืขืืื ืขืชืืื, ืืชืืื ืืืขืงื ืืฉืืคืืจ ืืชืืฉืืื.
ืฉืืคืืจ ืืืกืื ืืืืืงื
ืืืจืืืืช ืฆืืงืืืืืืช ืืืืื ืืฉืคืืขื ืืฉืืจืืช ืขื ืืกืคืจ ืืงืจื ืืืืืงื ืื ืืจืฉืื ืืืฉืืช ืืืกืื ืืื. ืื ื ืชืื ืขืฆืืื ืืงืื ืืชืืื ืืืงืจื ืืืืงื ืืื ืืคืืืช. ืืื ื ืืชืื ืงืื ืกืืื ืืกืืืขืื ืืืืืื ื ืชืืืื ืฉืื ื ืืืงื ืืืฆืขืช ืืงืจื ืืืืงื ื ืืกืคืื, ืืืืืืืื ืฉืื ืืขื ืคืื ืืืืืืื ืืืืืชืื.
ืืคืืชืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืคืฉืืช ืืช ืืืืืงืืช ืขื ืืื ืืคืืชืช ืืกืคืจ ืืงืจื ืืืืืงื ืื ืืจืฉืื. ืืืืืื, ืคืื ืงืฆืื ืขื ืขืฉืจ ื ืงืืืืช ืืืืื ืขืฉืืื ืืืจืืฉ ืืืชืจ ื-100 ืืงืจื ืืืืงื ืืื ืืืกืืช ืืช ืื ืื ืชืืืื. ืฉืื ืื ืคืื ืงืฆืื ืื ืืื ืืืคืืืช ืืช ื ืงืืืืช ืืืืืื ืืืจืื ืืฉืืขืืชืืช ืืช ื ืื ืืืืืงื.
public int calculateScore(boolean conditionA, boolean conditionB, boolean conditionC) {
if (conditionA && conditionB && conditionC) {
return 100;
} else if (conditionA && conditionB) {
return 80;
} else if (conditionA) {
return 50;
}
return 0;
}
ืืคืื ืงืฆืื ืื ืืฉ ืืกืคืจ ืชื ืืื ืืืืืืืื ืืืืจืืืืช ืฆืืงืืืืืืช ืืืืื. ืืื ื ืืชืื ืกืืื ืืืืืฆื ืืคืฉื ืืช ืืืืืืื ืื ืืืืง ืืืชื ืืคืื ืงืฆืืืช ืงืื ืืช ืืืชืจ, ืืืื ืืฉืคืจ ืืช ืืืืืช ืืืืืงื. ืขื ืืื ืืชืืื ืฉื ืืกืืจืืืืืช ืืืืงื ืืืืืฆื ืืคืืชืช ืืืจืืืืช, ืฆืืืชื ืคืืชืื ืืืืืื ืืืืืื ืืืกืื ืืงืืฃ ืขื ืืชืืจืืช ืืื ืืืืืช.
ืกืืืืช ืืืืข ืืืชืื ืชืื ืฆืจืื ืืืืืช ืืืคืช ืืืืจืืืืช ืฆืืงืืืืืืช (CC) ืืืืืื ืืืงืื ืฉื ืืขืืืช ืคืืื ืฆืืืืืืช
ืืืืข ืืืชืื ืชืื ืฆืจืื ืืืืืช ืืืคืช ืืืืจืืืืช ืฆืืงืืืืืืช (CC)
ืืืจืืืืช ืฆืืงืืืืืืช (CC) ืืื ืืืชืจ ืืกืชื ืืืฉื ืชืืืืจืื - ืืฉ ืื ืืฉืืืืช ืืขืฉืืืช ืืืฉืคืืขืืช ืขื ืื ืฉืื ืืืืืืจ ืืืืื ืฉื ืคืืชืื ืืชืืื ื. ืืืชืื ืชืื ืฆืจืื ืืืืืช ืืืคืช ื-CC ืืืืืื ืฉืืื ืืฉืคืืข ืืฉืืจืืช ืขื ืืืืืช ืืชืืืืงื, ืืงืจืืื ืืืืืื ืืช ืฉื ืืงืื ืฉืืื. ืฆืืื ื CC ืืืืืื ืืฆืืืขืื ืขื ืืื ื ืงืื ืืืจืืืื, ืฉืืืืืื ืืืงืฉืืช ืขื ืืื ื, ื ืืคืื ืืืืื ืืฉืื ืื. ืืืจืืืืช ืื ืืืืืื ืืช ืืกืืืจืืช ืืืื ืกืช ืืืืื ืืืืื ืืคืืชืื ืืขืืืื ืื ืขืชืืืืื. ืขืจืื CC ื ืืืืื ืืืชืจ ืคืืจืืฉื ืืืจื ืืื ืฉืืงืื ืคืฉืื ืืืชืจ, ืงื ืืืชืจ ืืืืืงื ืืคืืืช ื ืืื ืืฉืืืืืช.
ืืื ืช CC ืื ืืกืืืื ืืคืชืืื ืืงืื ืืืืืืช ืขืืฆืื ืืืฉืืืืช. ืืืืืื, ืืขืช ืืืืขืช ืชืืื ืืช ืืืฉืืช ืื ืขืืืื ืืืืฉ ืฉื ืงืื ืงืืื, ืืคืชืืื ืืฉืืงืืื CC ื ืืืื ืืืชืจ ืืืืฆืจ ืงืื ืืืืืืจื ืืฉืืืืฉ ืืืืจ. ืื ืืืืื ืืืคืืชืช ืืืื ืืืื ื ืืืืฆืืจืคืืช ืืืืจื ืืืชืจ ืืืืจื ืฆืืืช ืืืฉืื. ืื ืืกืฃ, ืืืืืื ืฉ-CC ืืชืื ืืืกืคืจ ืืงืจื ืืืืืงื ืื ืืจืฉืื, ื ืืืืื ืืืืื ืืืขืืืืช ืืืกืืจืืืืืช ืืืืงื ืืขืืืืช ืืืชืจ. ืขื ืืื ืฉืืืจื ืขื CC ื ืืื, ืืคืชืืื ืืืืืื ืืฆืืฆื ืืช ืืืืฆื ืืืืืงื, ืืืืขื ืืช ืกืงืืจืืช ืืงืื ืืืฉืคืจ ืืช ืืืืืช ืืืื ืื ืืืืืืื ืฉื ืืคืจืืืงื.
public int calculateUserScore(boolean isAdmin, boolean isPremium, boolean isActive) {
if (isAdmin && isPremium && isActive) return 100;
if (isAdmin && isPremium) return 80;
if (isPremium && isActive) return 70;
if (isActive) return 50;
return 10;
}
ืืคืื ืงืฆืื ืื ืืฉ CC ืฉื 5. ืืคืืชืช ืืืจืืืืช ืืื ืขื ืืื ืคืืจืืงื ืืฉืืืืช ืงืื ืืช ืืืชืจ ืืืืืงืืืช ืืืชืจ ืืคืฉืืช ืืช ืืืืืงืืช ืืืชืืืืงื, ืื ืฉืืืคื ืืช ืืกืืก ืืงืื ืืืชืืื ืืืชืจ ืืฉืื ืืืื ืขืชืืืืื.
ืืืฉืืืืช ืฉื ืืืืื ืืืงืื ืฉื ืืขืืืช ืคืืื ืฆืืืืืืช
ืืืืื ืืืงืื ืฉื ืืขืืืช ืคืืื ืฆืืืืืืช ืืงืฉืืจืืช ืืืืจืืืืช ืฆืืงืืืืืืช (CC) ืืืื ืืืฉืคืืข ืืืืคื ืืฉืืขืืชื ืขื ืืืืืืช ืืืงืืืืืช ืฉื ืคืจืืืงืื ืชืืื ื. ืืื ื ืืชืื ืงืื ืกืืื ืืืืืื ืชืคืงืื ืืืื ื ืืืืืื ืืขืืืช ืืงืฉืืจืืช ืืืืจืืืืช ืืฉืื ืืืงืื ืืชืืืื ืืคืืชืื. ืืืฉืจ CC ืื ืืืจ ืืจืฆืืคืืช, ืฆืืืชืื ืืืืืื ืืืืืช ืงืืขื ืงืื ืฉืขืืืืื ืืืคืื ืืืขืืืชืืื ืืื ืฉืืคืจืืืงื ืืชืจืื. ืืืฉื ืคืจืืืงืืืืืช ืื ืืคืืืชื ืืช ืืกืืืื ืืืืืจืช ืืืืื ืงืจืืืืื ืืฉืืืื ืืืืืจืื ืืืชืจ ืฉื ืืคืืชืื ืืืฉืจ ืืชืืงืื ืื ืืงืจืื ืืืชืจ ืืืืืืื ืืื ืจื ืืืชืจ.
ืืืืื ืืืงืื ืื ืืงื ืขื ืืงืฆืืช ืืฉืืืื ืืืื ืืืชืจ. ืฆืืืชืื ืืืืืื ืืชืขืืฃ ืืืืฆื ืขืืืื ืืืืฉ ืืืืืจืื ืืขืื ืืืจืืืืช ืืืืื, ืืืืืืื ืฉืจืืืืื ืงืจืืืืื ืืืฉืืจื ื ืืชื ืื ืืชืืืืงื ืืงืืื ืืืืืงื. ืืชืจ ืขื ืื, ืงืืืืช ืืขืืืช ืืืจืืืืช ืืืงืื ืืืคืฉืจืช ืฉืืคืืจืื ืืืืจืืืืืื, ืืืื ืขืช ืืฆืืืจืืช ืฉื ืืื ืืื ื. ืื ืืืืื ืืืืืืจื ืฉืืจืืจ ืืืืจืื ืืืชืจ ืืืคืืืช ืืคืชืขืืช ืืืืื ืืืงืืจืืช ืงืื ืื ืคืจืืกืืช ืืืฆืืจ. ืืืืงืืช ืืืจืืืืช ืืืืืืืืืช ืืืฉืืืืืช ืืฆืื ืืจืืช CI/CD ืืืืืืืช ืฉืงืื ืืืฉ ืขืืื ืืชืงื ื ืืืืจืืืืช ืฉื ืงืืขื, ืืืงืื ืืช ืืจืืืืช ืืคืจืืืงื ืืืืื ืืจืื.
pipeline {
agent any
stages {
stage('Early Complexity Detection') {
steps {
sh 'static-analysis-tool --complexity-threshold 10 --early-detection'
}
post {
failure {
error 'Build failed: Early detection of high cyclomatic complexity.'
}
}
}
}
}
ืชืฆืืจื ืื ืฉื Jenkins Pipeline ืืืืืื ืืืฆื ืืืืงืืช ืืืจืืืืช ืืืืืืช ืืืืืช ืืืืืืืืืช ืืื ืืืืืื ืืืืื ืืืงืื. ืื ืืจืืื ืืกืฃ ื-CC, ืืฆืื ืืจ ื ืืฉื, ืื ืฉืืืงืฉ ืคืขืืื ืืืืืืช. ืขื ืืื ืืืืืฅ ืคืจืงืืืงืืช ืืืื, ืฆืืืชื ืคืืชืื ืืืืืื ืืื ืืข ืืืขืืืช ืืงืฉืืจืืช ืืืืจืืืืช ืืืฉืคืืข ืขื ืฉืืื ืคืืชืื ืืืืืจืื ืืืชืจ, ืืืืืืื ืฉืืชืืื ื ืชืืฉืืจ ืืืื ื, ื ืืชื ืช ืืชืืืืงื ืืงืื ืืืจืืื.
ืืชืื ืชืื ืืื ืืจืื ืืื ืืืื ืืืืคื ืคืขืื ืืช ื-Cyclomatic Complexity (CC) ืชืืจืืื ืืืฆืืจืช ืืกืืกื ืงืื ืืืืืชืืื ืื ืืชื ืื ืืชืืืืงื. ืืืืื ืืืงืื ืฉื ืืขืืืช ืคืืื ืฆืืืืืืช ืืืืื ืฉืืืืจืืืืช ื ืฉืืจืช ืืฉืืืื, ืืคืืืช ืืช ืืกืืืื ืืืืืื, ืืคืืืช ืืช ืขืืืืืช ืืชืืืืงื ืืืฉืคืจ ืืช ืืืฆืืขื ืืชืืื ื ืืืืืืื. ืฉืืืื ืืืืงืืช CC ืืืืืืืืืช ืืฆืื ืืจืืช CI/CD ืืกืคืงืช ืืกืืจืช ืืืงื ืืืืืืช ืงืื ืืจืืืช ืืืื ืืืฆืืืช ืคืจืืืงื.
ืืืฆื ืืืฆืื ืืืจืืืืช ืฆืืงืืืืืืช ืืงืื ืฉืื
ืืื ืช ืืืกืืืืช ืฉื ืืืฉืื ืืืจืืืืช ืฆืืงืืืืืืช
ืกืืงืืืืืืช ืืืจืืืืช (CC) ืืืืืช ืืช ืืกืคืจ ืื ืชืืืื ืืขืฆืืืืื ืืจื ืงืื ืืืงืืจ ืฉื ืชืืื ืืช. ืืื ืืืฆืื CC ืืืืคื ืืื ื, ืืคืชืืื ืืืืืื ืืืฉืชืืฉ ืื ืืกืื ืฉื McCabe: , ืืืฉืจ ืืืืฆื ืืช ืืกืคืจ ืืงืฆืืืช ืืืจืฃ ืืจืืืช ืืืงืจื, ืืกืคืจ ืืฆืืชืื ืืืกืคืจ ืืจืืืืื ืืืืืืจืื. ืขืืืจ ืคืื ืงืฆืืืช ืงืื ืืช, ืืืฉืื ืืื ื ืฉื CC ืืคืฉืจื, ืื ืืื ืฉืืกืืกื ืงืื ืืืืื, ืื ืืืคื ืืืืชื ืืขืฉื. ืืืื ื ืืืฆื ืื ืืฆืืจื ืืืชื ืืช, ืืืืื ืืืื ื ืืงืจื ืชืืจืืื ื-CC ืืืื ืืช ืืืืืื ืืืืืงืช. ืื ื ืงืืืช ืืืืื, ืืืื if, else, while, for, ื case ืืฆืืจืืช, ืืืกืืฃ ืืื ืืขืจื CC.
ืืืืืื:
public void exampleFunction(boolean conditionA, boolean conditionB) {
if (conditionA) {
System.out.println("Condition A is true");
}
if (conditionB) {
System.out.println("Condition B is true");
}
}
ืืคืื ืงืฆืื ืื ืืฉ ืฉืชื ื ืงืืืืช ืืืืื (if ืืฆืืจืืช), ืืืชืืฆืื ืืื CC ืฉื 3 (2 ืชื ืืื + 1 ืขืืืจ ื ืชืื ืืจืืจืช ืืืืื). ืขื ืืื ืืื ืช ืืืืฉืืืื ืืืื, ืืคืชืืื ืืงืืืื ืชืืื ื ืืืฆื ืื ืืืง ืืงืื ืฉืืื ืืฉืคืืข ืขื ืืืืจืืืืช ืืืืืืช.
ืฉืืืืฉ ืืืืื ืื ืืชืื ืงืื ืกืืื
ืืื ื ืืชืื ืงืื ืกืืื ืืกืคืงืื ืืืฉื ืืืืืืืืช ืืืืฉืื ืืืจืืืืช ืฆืืงืืืืืืช. ืืืื ืืื ืกืืจืงืื ืืช ืื ืืกืืก ืืงืื, ืืืืืืื ืขื ืขืจืื CC ืขืืืจ ืื ืคืื ืงืฆืื ืื ืืืืื, ืืืืืืฉืื ืืืืจืื ืืืืจืืื ืืกืฃ ืืืืจืืืืช ืืืงืืื. ืืื ื ืืชืื ืกืืื ืคืืคืืืจืืื ืืฉืชืืืื ืขื ืกืืืืืช ืคืืชืื, ืืืฆืืขืื ืืฉืื ืืืื ืืืช. ืื ืืฆืืืื ืฆืืื ื ืืืจืืืืช ืืฆื ืืฆืขืืช ื ืืชื ืืช ืืคืขืืื, ืื ืฉืืงื ืขื ืืคืชืืื ืืฉืืืจ ืขื ืืืืืช ืงืื ืืืคืืืืืืช.
ืืืืืื, ืืคืขืืช ืืื ื ืืชืื ืงืื ืกืืื ืขืฉืืื ืืืืฆืจ ืคืื ืืื:
Function: processOrder
Cyclomatic Complexity: 12
Recommendation: Consider refactoring to reduce nested conditionals and loops.
ืขื ืืื ืืชื ืชืืื ืืช ืืืื, ืืืืื ืืืื ืืื ืขืื ื ืืืืฉืื, ืืืืคืฉืจืื ืืืคืชืืื ืืืชืืงื ืืฉืืืืจ ืืงืืขืื ืืืืจืืืื ืืืืชืจ ืืงืื ืฉืืื. ืชืืืื ืื ืืืื ื ืืื ืืืืืื ืฉืคืจืืืงืืื ืืืฉืืจื ื ืืชื ืื ืืชืืืืงื ืื ืืชื ืื ืืืจืืื ืชืื ืืื ืืชืคืชืืืชื.
ืืื ืืฃ ืชืืกืคืื ืฉื IDE ืื ืืชืื ืืืจืืืืช
ืกืืืืืช ืคืืชืื ืืฉืืืืืช ืืืืจื ืืืช (IDE) ืืฆืืขืืช ืชืืกืคืื ืืืคืฉืืื ืืช ืืืืื ื-CC. ืชืืกืคืื ืืื ืืฉืชืืืื ืืฆืืจื ืืืงื ืืืจืืืืช ืขืืืื ืฉื ืคืืชืื, ืืืกืคืงืื ืฆืืื ื ืืืจืืืืช ืืืื ืืืช ืืืื ืฉืืคืชืืื ืืืชืืื ืงืื. ืืื ื ืืชืื ืืืจืืืืช ืืืืกืกื IDE ืืืืืฉืื ืงืืขื ืงืื ืืขืืืชืืื ืืฉืืจืืช ืืชืื ืืขืืจื, ืืืืคืฉืจืื ืคืขืืืืช ืืชืงื ืืช ืืืืืืืช.
ืืืืืื, ืืขืช ืขืจืืืช ืคืื ืงืฆืื, ืชืืกืฃ ืขืฉืื ืืืฆืื ืืืืจื ืื CC ืืืจื ืืกืฃ ืฉืฆืืื. ืืคืชืืื ืืืืืื ืื ืืืืฉื ืฉืืืืช ืขืืืื ืืืืืฆืืช ืืืื ืืืืืฅ ืฉืืืืช, ืฆืืฆืื ืชื ืืื ืืงืื ื ืื ืื ืฉืืืืฉ ืืืื ื ืืงืจื ืคืฉืืืื ืืืชืจ. ืชืืื ืืช ืืื ืืืื ืืืช ืืคืืืชืืช ืืช ืืกืืืจืืช ืฉืืืฆืื ืืขืืืช ืืงืฉืืจืืช ืืืืจืืืืช ืืืืื ืืคืืชืื.
public int calculateDiscount(int price, boolean isMember, boolean isHoliday) {
if (isMember) {
if (isHoliday) {
return price * 80 / 100;
} else {
return price * 90 / 100;
}
} else if (isHoliday) {
return price * 95 / 100;
}
return price;
}
ืืคืื ืงืฆืื ืื ืืฉ ืืกืคืจ ืชื ืืื ืืงืื ื ืื, ืื ืฉืืืืื ื-CC ืืืื ืืืชืจ. ืชืืกืคืื ืฉื IDE ืืกืื ื ืืช ืื ื-refactoring, ืืืฆืืขืื ืืื ื ืฉืืื ืืืชืจ ืื ืคืืฆืื ืืคืื ืงืฆืื ืืืืืืืช ืงืื ืืช ืืืชืจ.
ืืืฆืืข ืืืงืืจืืช ืงืื ืืื ืืืช ืขื ืืชืืงืืืช ื-CC
ืืขืื ืฉืืืื ืืืืืืืืื ืืกืคืงืื ืืืฉืืื CC ืืืืจืื, ืกืงืืจืืช ืงืื ืืื ืืืช ืืฆืืขืืช ืชืืื ืืช ืืฉืืืืช ืกืคืฆืืคืืืช ืืืงืฉืจ. ืืืืื ืกืงืืจืืช ืงืื, ืืคืชืืื ืฆืจืืืื ืืืืื ืืื ื ืืจืืืช ืืงืจื, ืืืืืช ืืืืื ืืืืช ืืคืฉื ืืช ืืืืืืื ืืืืคืืืช ืืช ื ืงืืืืช ืืืืืื. ืืืืฉืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืกืงืืจืืช ืงืื ืืืืืื ืฉื ืืืื ืืืืจืืืืช ืืืคื ืืืืง ืืืชื ื ืคืจื ืืชืืืื ืืคืืชืื.
ืกืืงืจืื ืืืืืื ืืืคืฉ:
ืงืื ืื ืืืืื ืฉื ืืชื ืืฉืื.
ืคืื ืงืฆืืืช ืฉืืืฆืขืืช ืืฉืืืืช ืืจืืืืช ืืืืืืืช ืืืชืคืจืง.
ืืืืื ืืืืช ืืืืืืฃ ืืช ืืืืืืื ืืืืชื ื ืืคืืืืืืจืคืืื.
ืขื ืืื ืืืคืื ืชืจืืืช ืฉืื ืฉืืงืืื ืืืจืืืืช ืื ืืืง ืืกืงืืจืืช ืฉืืจืชืืืช, ืฆืืืชืื ืฉืืืจืื ืขื ืืกืืกื ืงืื ื ืงืืื ืืืชืจ ืื ืืชื ืื ืื ืืืื.
ืฉืืืื ื ืืชืื ืืืจืืืืช ืืืืืงืช ืืืืืืช
ืืกืืจืืืืืช ืืืืืงืช ืืืืืืช ืืืืืืช ืื ืืืฉืืฃ ืชืืื ืืช ืืืื CC. ืืืืืื ืฉืื ื ืชืื ืขืฆืืื ืืืจืฉ ืืืืงื, ืืกืคืจ ืืืื ืฉื ืืงืจื ืืืืงื ื ืืจืฉืื ืืฆืืืข ืขื ืืืจืืืืช ืืืืืจืช. ื ืืชืื ืืืกืื ืืืื ืืืืื ืืฆื ืฆืืื ื CC ืขืืืจ ืืืืืช ืงืื ืฉืขืฉืื ืืืคืืง ืชืืขืืช ืืคืืฉืื. ืืคืชืืื ืืืืืื ืืฆืืฆื ืืช ื-CC ืขื ืืื ืฉืื ืื ืืืคืืื ืืื ืืืงืืื ืืช ืืกืคืจ ื ืชืืื ืืืืฆืืข, ืืืื ืืืืขื ืืช ืชืืืื ืืืืืงื.
ืืืืืื:
public int computeShippingCost(boolean isExpress, boolean isInternational, boolean hasInsurance) {
if (isExpress && isInternational) return 100;
if (isInternational) return 80;
if (isExpress) return 50;
if (hasInsurance) return 30;
return 20;
}
ืืคืื ืงืฆืื ืื ืืฉ ืืจืืข ื ืงืืืืช ืืืืื, ืืืชืืฆืื ืืื CC ืฉื 5. Refactoring ืขื ืืื ืืคืจืืช ืืืืืงื ืืฉืืืืช ืงืื ืืช ืืืชืจ ืืคืืืช ืืช ืืืืจืืืืช ืืืช ืืืกืคืจ ืืืชืืื ืฉื ืืงืจื ืืืืงื, ืื ืฉืืืคื ืืช ืืืืืงื ืืืขืืื ืืืชืจ.
ืืื ื ืืืืืื ืฉื ืืืจืืืืช ืฆืืงืืืืืืช ืืงืื ืืืจืฉืช ืฉืืืื ืฉื ืืืื ืืืืืืืืื, ืกืงืืจืืช ืืื ืืืช ืืฉืืืืช ืขืืฆืื ืืชืืฉืืืช. ืขื ืืื ืฉืืืื ืฉืืืืช ืืื ืืชืืืืื ืขืืืื ืจืืืืื ืฉื ืคืืชืื, ืืชืื ืชืื ืืืืืื ืืืืืื ืืกืืกื ืงืื ืืืืืชืืื, ื ืืชื ืื ืืชืืืืงื ืื ืืชื ืื ืืืืืงื ืืชืืืืื ืืคืืชืื ืชืืื ื ืืจ-ืงืืืื.
ืืืฆื ืืืคืืืช ืืช ืืืืจืืืืช ืืื ืชืืื ืืช
ืคืืฉืื ืืื ื ืืงืจื
ืืืช ืืืจืืื ืืืขืืืืช ืืืืชืจ ืืืคืืชืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืื ืชืืื ืืช ืืื ืขื ืืื ืคืืฉืื ืืื ื ืืงืจื. ืืื ื ืืงืจื ืืืจืืืื ืขื ืืกืคืจ ืขื ืคืื ืืืชื ืื ืืืืืืื ืืฉืืขืืชืืช ืืช ืืืจืืืืช ืืงืื. ืืคืืชืช ืืงืื ื ืื if ืืฆืืจืืช, switch ืืงืจืื, ืืืืืืืช ืืืืืืช ืืขืืืจ ืืืืขื ืืช ืืจืืืช ืืืงืจื. ืืืืจืืช ืืืงืืืืช, ืืืืื ื ืื ืกืขืืคื ืฉืืืจื, ืืืืืืช ืืืคืืืช ืงืื ืื ืืืืชืจ ืขื ืืื ืืืคืื ืืืงืจืื ืืจืืืื ืืจืืฉ.
ืืืืืื:
public int calculateBonus(int yearsOfService, boolean isManager) {
if (yearsOfService < 1) return 0;
if (isManager) return 5000;
return 2000;
}
ืืงืื ืฉืืืขืื ืืฉืชืืฉ ืืกืขืืคืื ืฉืืืจื ืืื ืืคืฉื ืืช ืืืืืืื, ืืืคืืืช ืืช ืืงืื ืื ืืืฉืคืจ ืืช ืืงืจืืื. ืคืืฉืื ืืื ื ืืืงืจื ืื ืืงืืื ืืช ืืกืคืจ ืืงืจื ืืืืืงื ืื ืืจืฉืื, ืื ืฉืืืคื ืืช ืืงืื ืืงื ืืืชืจ ืืืืืงื ืืืชืืืืงื.
ืืคืืืช ืคืื ืงืฆืืืช ืืืืืืช ืืงืื ืืช ืืืชืจ
ืคืืจืืง ืคืื ืงืฆืืืช ืืืืืืช ืืคืื ืงืฆืืืช ืงืื ืืช ืืืชืจ ืืืืืงืืืช ืืืชืจ ืืื ืืื ืืงื ืืืื ืืช ื ืืกืคืช ืืืคืืชืช ืืืืจืืืืช. ืคืื ืงืฆืืืช ืืืืืืช ืืืืคืืืช ืืืฉืืืืช ืืจืืืืช ืืืืืืช ืืืืืช ืืืชืืจืืช ืืงืจืืื, ืืื ื ืืชืืืืงื. ืืคืืืชื ืืืืฉ ืืคืื ืงืฆืืืช ืงืื ืืช ืืืชืจ, ืฉืื ืืืช ืืืจืืืช ืืืฉืืื ืืืช, ืืคืืืชื ืืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืืขืืืืช ืฉืืืืฉ ืืืืจ.
public void processOrder(boolean isPriority, boolean isInternational) {
if (isPriority) handlePriority();
if (isInternational) handleInternational();
finalizeOrder();
}
private void handlePriority() {
System.out.println("Priority handling");
}
private void handleInternational() {
System.out.println("International shipping");
}
private void finalizeOrder() {
System.out.println("Order finalized");
}
ืืืืืื ืื, refactoring ืืคืืืช ืืช ืืืืจืืืืช ืฉื processOrder ืคืึผื ืงืฆึดืึธื. ืคืื ืงืฆืืืช ืงืื ืืช ืืืชืจ ืืืคืืืช ืืช ืืืืืงืืช ืืืชืืืืงื ืื ืืชื ืืช ืื ืืืื, ืืืฉืคืจืืช ืืช ืืืืจืืช ืืงืื ืืืืืืช.
ืืืืช ืืคืืกื ืขืืฆืื
ืืคืืกื ืขืืฆืื ืืืื ืืกืืจืืืื, ืืืื ื ืืฉืืืช ืชืื ืืช ืืืืืื ืืืคืืืช ืืช ืืืืจืืืืช ืขื ืืื ืงืืืื ืงืื ืืืืืืจื ืืืืืฉ. ืืคืืกืื ืืื ืขืืืจืื ืืืื ืืช ืืืืืืื ืืืืชื ื ืืืืจืื ืขื ืืื ืืืฆืืช ืืืจืืืช ืืืืืงืืช ืืืจืืช. ืืืืืื, ืืคืืก ืืืกืืจืืืื ืืืคืฉืจ ืืืืจื ืฉื ืืืืืจืืชื ืืืื ืจืืฆื, ืืืกืืจ ืืกืชืขืคืืช ืืืชื ืืช ืขื ืกืื ืกืื.
interface PaymentStrategy {
void pay(int amount);
}
class CreditCardPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("Paid " + amount + " using Credit Card");
}
}
class PayPalPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("Paid " + amount + " using PayPal");
}
}
public class ShoppingCart {
private PaymentStrategy paymentStrategy;
public ShoppingCart(PaymentStrategy paymentStrategy) {
this.paymentStrategy = paymentStrategy;
}
public void checkout(int amount) {
paymentStrategy.pay(amount);
}
}
ืืฉืืืืฉ ืืชืื ืืช ืืืกืืจืืืื ืืืืืื ืื ืืืื ืืช ืืฆืืจื ืืืืืงืืช ืืืชื ืืช ืืจืืืืช, ืืืชืืฆืื ืืื ืงืื ื ืงื ืืืชืจ ืื ืืชื ืืชืืืืงื ืขื ืืืจืืืืช ืฆืืงืืืืืืช ืืืคืืชืช.
ืืคืืชืช ืืืจืืืืช ืืืืค
ืืขืชืื ืงืจืืืืช ืืืืืืช ืชืืจืืืช ืืืืคื ืืฉืืขืืชื ืืืืจืืืืช ืืฆืืงืืืืืืช, ืืืืืื ืืฉืื ืืงืื ื. ืฆืืฆืื ืืขืืืง ืฉื ืืืืืืช ืืงืื ื ืืช ืื ืืืืคืชื ืืืื ืื ืืขืืืื ืืืชืจ ืืื ืคืขืืืืช ืืจื ืืฉืคืืช ืืืืจื ืืืช ืืืื ืืคืฉื ืืช ืืงืื. ืืืืฆืขืืช break, continue, ื return ืืฆืืจืืช ืืจืืื ืืืืืืช ืื ืืขืืืจ ืืฉืื ืืืืืืช ืืืืคืืืช ืืช ืืืืจืืืืช.
public void processList(List<String> items) {
items.stream()
.filter(item -> item.startsWith("A"))
.forEach(System.out::println);
}
ืืืืื ืื ืืืืืคื ืืืืืืช ืืงืื ื ืืช ืืคืขืืืช ืืจื, ืืฉืคืจืช ืืช ืืงืจืืื ืืืคืืืชื ืืช ืืืืจืืืืช ืืฆืืงืืืืืืช. ืืืฉืงื API ืฉื Stream ืืืคืฉืจืื ืงืื ืชืืฆืืชื ืืืืคื ืืคืขืืืืช ืืืจืืืืช ืืืื ืืืืืื ืืช ืฆืืื ืืืืจืืืืช.
ืืืขืืจ ืืืืืืื ืืืชื ืื
ืืืืืืื ืืืชื ืื ืืืจืืืื ืชืืจืืื ืืืืจืืืืช ืฆืืงืืืืืืช ืืืืื. ืคืืฉืื ืืืืืืื ืืื ืขื ืืื ืฉืืืืฉ ืืืืืจืืช ืืืงืืืืช, ืืืคืจืืืจืื ืืจืื ืจืืื, ืื ืืงืคืฆืช ืชื ืืื ืืฉืืืืช ืชืืืืจืืืช ืืืื ืืืคืืืช ืืช ืืืืจืืืืช. ืืืืืืื ืืืชื ืื ืืจืืจืื ืืคืฉืืืื ืื ืืฉืคืจืื ืืช ืืงืจืืื ืืืคืืืชืื ืืช ืืกืืืื ืืืื ืกืช ืฉืืืืืช.
public boolean isEligibleForDiscount(Customer customer) {
return customer.isLoyalMember() && customer.getPurchaseHistory() > 5;
}
ืฉืืื ืชืืฆืืชืืช ืื ืืืืืคื ืืช ืืืืืืื ืืืืชื ื ืืืืจืื ืืืืืื ืืจืืจ ืืงืจืื. ืคืืฉืื ืืชื ืืืช ืืืืคื ืื ืืคืืืช ืืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืชืื ืืืคื ืืช ืืงืื ืืงื ืืืชืจ ืืืื ื ืืืืืืงื.
ืืคืืชืช ืืืืจืืืืช ืืื ืชืืื ืืช ืืืจืฉืช ืืืืจืืช ืขืืฆืืืืืช ืืชืืฉืืืช, ืขืืืื ืืืืืฉ ืืืื ืืฃ ืชืืื ืืช ืฉืคื ืืืืจื ืืืช. ืขื ืืื ืคืืฉืื ืืื ื ืืงืจื, ืืืืืฃ ืืืืฉ ืฉื ืคืื ืงืฆืืืช ืืืืืืช, ืืืฉืื ืืคืืกื ืขืืฆืื ืืชืืืืื, ืืคืืชืช ืืืจืืืืช ืืืืืื ืืฆืืฆืื ืืืืืืื ืืืชื ืื, ืืคืชืืื ืืืืืื ืืืฆืืจ ืืกืืกื ืงืื ื ืืชื ืื ืืชืืืืงื, ืืขืืืื ืื ืืชื ืื ืืืจืืื ืืชืืืืื ืืืฆืืืช ืชืืื ื ืืจืืืช ืืืื.
ืืชืืจืื ืืืืืืืืช
ืืืคืื ืืงืื ืืืืจ ืงืืื ืืืืจืืืืช ืืืืื
ืืกืืกื ืงืื ืืืืจ ืงืืื ืืืืขืื ืืจืื ืขื ืืืจืืืืช ืฆืืงืืืืืืช ืืืืื, ืื ืฉืืฆืื ืืชืืจืื ืืฉืืขืืชืืื ืขืืืจ ืืคืชืืื. ืืืชืื ืฉืงืืืื ืืื ืืชืคืชืื ืืื ืขืืืื ืืืืฉ ืืชืืื, ืื ืฉืืืืื ืืจืืืืื ืืืืืจืื ืืืืง ืืืื ื ืืงืจื ืืืจืืืื. ืฉืืืืจ ืงืื ืืื ืขืืื ืืืื ืืก ืชืืคืขืืช ืืืืื ืื ืืืืื ืืช, ืืืืืื ืืืฉืจ ืืฉ ืืืกืจ ืชืืขืื ืืืืืงืืช ื ืืืชืืช. ืืคืชืืื ืืืืืื ืืืฉืช ืืงืื ืืืืจ ืงืืื ืืืืืจืืช ืขื ืืื ืืืืขืช ืืกืืจืืืืืช ืืืืืฉืืช ืืฆืืืจืืช ืืืืืงืืช ืืืืืืช ื ืจืืืืช ืืื ืืืืืื ืฉืฉืื ืืืื ืื ืืฉืืจื ืืช ืืคืื ืงืฆืืื ืืืืช ืืงืืืืช. ืืื ื ืืชืื ืงืื ืกืืื ืืืืืืื ืืืืืื ืืขืืืจ ืขื ืืื ืืืชืืจ ืืืืืจืื ืืืืจืืืื ืืืืกืืื ืื ืืืืชืจ ืืงืื, ืืื ืืืช ืืคืชืืื ืืืื ืืืงื ืืช ืืืืฆืืื.
ืืืืื ืืื ืืืฆืืขืื ืืคืฉืืืช
ืืคืืชืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืจืืื ืืขืชืื ืงืจืืืืช ืืฉืื ืื ืงืื ืืคืื ืงืฆืืืช ืงืื ืืช ืืืชืจ ืื ืืืืฉืื ืืคืืกื ืขืืฆืื. ืขื ืืืช, ืฉืื ืืืื ืืื ืขืฉืืืื ืืคืขืืื ืืืฉืคืืข ืขื ืืืืฆืืขืื, ืืืืืื ืื ืงืจืืืืช ื ืืกืคืืช ืืฉืืื ืืฆืืืืช ืชืงืืจื. ืขื ืืืคืชืืื ืืืฆืื ืืืืื ืืื ืืชืืืช ืงืื ืคืฉืื ืื ืืชื ืืชืืืืงื ืืฉืืืจื ืขื ืืืฆืืขืื. ืืฉ ืืขืจืื ืคืจืืคืื ืืืฆืืขืื ืืืืืื ืืืฆืืขืื ืืืืจ ืืืฆืืข ืืืืฉ ืืื ืืืืืื ืฉืืืืฆื ืืคืฉืืืช ืืื ื ืคืืืขืื ืืืขืืืืช ืืืขืจืืช. ืืืืฉืืืื ืงืจืืืืื ืืืืฆืืขืื, ืืืชืื ืฉืืืื ืฆืืจื ืืฉืืืจ ืขื ืืื ืืื ืื ืืืจืืืื ืื ืื ืืกืคืงืื ืืชืจืื ืืช ืืืฆืืขืื ืืฉืืขืืชืืื.
ืืกืชืืืืช ืืชืจ ืขื ืืื ืืืืืืฆืื
ืืขืื ืฉืืื ื ืืชืื ืงืื ืกืืื ืื ืืขืื ืขืจื ืจื ืืืืืื ืืืจืืืืช ืืืืื, ืืกืชืืืืช ืืชืจ ืขื ืืืืื ืืืื ืขืืืื ืืืืืช ืืขืืืชืืช. ืืืชืื ืฉืืืื ืื ืชืืื ืืืื ืื ืืช ืืืงืฉืจ ืืจืื ืืืชืจ ืฉื ืืืืฉืื, ืื ืฉืืืืื ืืชืืฆืืืช ืืืืืืืช ืฉืืืืืช ืื ืืืืฆืช ืืืืื ืืืืช ืืืืคืืืืืืฆืื. ืื ืืกืฃ, ืืคืชืืื ืขืฉืืืื ืืืชืขืื ืืชืืื ืืช ืืฉืืืืช ืืกืงืืจืืช ืงืื ืืื ืืืช, ืืื ืื ืฉืืืื ืืืืืืืืื ืืชืคืกื ืื ืืขืื. ืืื ืืืืื ืข ืืืืืืืช ืื, ืืฆืืืชืื ืฆืจืืืื ืืฉืื ื ืืชืื ืืืืืืื ืขื ืืืงืืจืืช ืขืืืชืื ืืกืืืืืช, ืืืืืืื ืฉืืืืืืืช ืฉืืชืงืืื ืืืคืืชืช ืืืืจืืืืช ืชืืืืืช ืืช ืืขืื ืืคืจืืืงื ืืืืืืื.
Refactoring ืืื ืืืืงื ืืกืคืงืช
ืฉืื ืื ืงืื ืืื ืืืคืืืช ืืช ืืืืจืืืืช ืืื ืืืื ื ืื ืืกืืื ืืื ืืืกืื ืืืืงื ืืงืืฃ. ืฉืื ืืืื ืฉื ืืขืื ืืคืฉื ืืช ืืงืื ืขืืืืื ืืฉื ืืช ืืืขืืช ืืช ืืชื ืืืืชื, ืืืืืืื ืืืืืื ืืืืฉืืื ืืืขืจืืช. ืืคื ื ืืืฆืืข ืืืืฆื ืขืืืื ืืฉืืขืืชืืื, ืขื ืืืคืชืืื ืืืืื ืฉืืืกืืก ืืงืื ืืฉ ืืืื ื ืืืืืืช ืืืื ืืืจืฆืื ื ืืืชืื. ืืืืงืืช ืืื ืืกืคืงืืช ืจืฉืช ืืืืืื, ืืืืฉืจืช ืฉืืคืื ืงืฆืืื ืืืืช ื ืฉืืจืช ืืื ืฉืื ืื ืืืืจ ืฉืื ืืืื. ื ืืชื ืื ืืืืฅ ืฉืืืืช ืคืืชืื ืืื ืข-ืืืื (TDD) ืืื ืืืืืื ืฉืื ืงืื ืืืฉ ืฉืืืฆื ืืืืื ื-refactoring ืืืืื ืืืืืงืืช ืืืงืืช.
ืืชืขืืืืช ืืืืจืืืืช ืืืืืืงื ืืขืกืงืืช
ืืืฉืืืื ืืกืืืืื ืืืืืื ืืืืขื ืืืืืื ืขืกืงื ืืืจืื ืฉืื ื ืืชื ืืคืฉื ืืงืืืช. ื ืืกืืื ืืืคืืช ืคืืฉืื ืืืื ืืืืื ืืช ืืชืืื ืขืืื ืืืืืื ืืคืืฉืื ืืชืจ, ืฉืื ืชืืืืืื ืงืจืืืืื ืืชืคืจืงืื ืืฆืืจื ืื ืืืืืช, ืืืืจืืื ืืืืืื ืืืขืืืืช. ืืคืชืืื ืืืืืื ืืืืืื ืืื ืืืจืืืืช ืืื ืืช, ืฉืืขืชืื ืงืจืืืืช ื ืืชื ืืฆืืฆื, ืืืื ืืืจืืืืช ืขืกืงืืช ืืืื ืืช, ืฉืฆืจืื ืื ืื. ืฉืืชืืฃ ืคืขืืื ืขื ืืืืืงื ืขื ืืื ืขืกืงืืื ืืืืื ืฉืืืืฆื ืขืืืื ืืงืื ืืืืืื ืืช ืฉืืืืชื ืฉื ืชืืืืื ืืืืื ืืขืกืงืืื.
ืชืงื ื ืืืจืืืืช ืื ืขืงืืืื ืืื ืฆืืืชืื
ืืคืจืืืงืืื ืืืืืื ืืืืืืื ืฆืืืชื ืคืืชืื ืืจืืืื, ืชืงื ื ืืืจืืืืช ืื ืขืงืืืื ืืืืืื ืืืืืื ืืืกืืกื ืงืื ืืคืืฆืืื. ืฆืืืชืื ืืกืืืืื ืขืฉืืืื ืืชืขืืฃ ืืืฆืืขืื, ืืขืื ืฉืืืจืื ืืชืืงืืื ืืชืืืืงื, ืืืชืืฆืื ืืื ื ืืืื ืงืืืื ืกืืชืจืื. ืงืืืขืช ืงืืืื ืื ืืื ืืื-ืืจืืื ืืื ืขืืืจ ืกืคื ืืืจืืืืช ืฆืืงืืืืืืื ืืงืืืืื ืืื ืืืื ืืช. ืืืงืืจืืช ืกืืืจืืช ืืื ืฆืืืชืื ืืฉืืืืช ืขืืืื ืืืืืฆืืช ืืฉืืชืคืืช ืขืืืจืืช ืืฉืืืจ ืขื ืขืงืืืืช, ืืืืืืืืช ืฉืื ืืกืืก ืืงืื ืขืืื ืืกืื ืืจืืื ืืืืกืืืื. ืชืืขืื ืืจืืจ ืืืืจืื ืืืืืื ืืืืฉืจ ืขืื ืืืชืจ ืฆืืืชืื ืขื ืืกืืจืืืืืช ื ืืืื ืืืจืืืืช.
ืคืืจืืฉ ืฉืืื ืฉื ืืืื ืืืจืืืืช
ืืืจืืืืช ืฆืืงืืืืืืช ืืื ืืื ืืขื ืขืจื, ืื ืืื ืืคืจืฉ ืืืชื ืื ืคืจื. ืฆืืื ืืืจืืืืช ื ืืื ืื ืืืืจ ืืืืจื ืฉืืงืื ืืขืืฆื ืืืื, ืืื ืฉืื ืชืืื ืฆืืื ืืืื ืืขืื ืขื ืืืืืช ืืจืืื. ืืคืชืืื ืืืืืื ืืฉืงืื ืืืจืืื ืืืจืื ืืื ืงืจืืื, ืืืฆืืขืื ืืืืกืื ืืืืงื ืืขืช ืืขืจืืช ืืืืืช ืืงืื. ืืืฉ ืืชืจ ืขื ืืฉืืช ืฆืืื ื ืืืจืืืืช ื ืืืืื ืืืื ืืืืืื ืืฉืื ืื ืืืืชืจ ืฉืืฆืืข ืชืืขืืช ืืขืฉืืช ืืืขืื. ืืืืื ืฆืจืืืื ืืื ืืืช ืืช ืงืืืช ืืืืืืืช, ืื ืืืืชืื ืืืชื.
ืืชืืืืืืช ืขื ืืชืืจืื ืืืืืืืืช ืืื ืืืจืฉืช ืืืฉื ืืืืื ืช ืืืฉืืืช ืืกืืจืืืืืช ืืื ืืืช, ืชืืืืืื ืฉืืชืืคืืื ืืืื ื ืขืืืงื ืื ืฉื ืืืฆืืขื ืืืืฉืื ืืื ืฉื ืืืจืืฉืืช ืืขืกืงืืืช. ืขื ืืื ืืืืื ืืืคืืชื ืฉื ืกืืืื ืื ืืื, ืฆืืืชื ืคืืชืื ืืืืืื ืื ืื ืืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืืขืืืืช, ืืืชืืฆืื ืืื ืคืชืจืื ืืช ืชืืื ื ืืืงืื, ื ืืชื ืื ืืชืืืืงื ืืืืืืชืืื.
ืื ืขืืื ืืขืฉืืช ืืืืจ ืืื ืืืฉืจ ืืชื ืืืฆื ืชืืื ืืช ืืขืืช ืืืจืืืืช ืฆืืงืืืืืืช ืืืืื
ืืขืจืืช ืืืฉืคืขื ืฉื ืืืจืืืืช ืืืืื
ืืืฉืจ ืชืืื ืืช ืืืืื ืืืขืืช ืืืจืืืืช ืฆืืงืืืืืืช ืืืืื, ืืฆืขื ืืจืืฉืื ืืื ืืืขืจืื ืืช ืืฉืคืขืชื ืขื ืืคืจืืืงื. ืื ืื ืงืื ืืืจืื ืืืจืฉ ืจืืคืงืืืจ ืืืืื. ืืคืชืืื ืฆืจืืืื ืืืขืจืื ืืืืื ืชืืืจืืช ืืงืื ืืฉืชื ื, ืืช ืงืจืืืืืชื ืืคืื ืงืฆืืื ืืืืช ืืืืื ืฉื ืืืคืืืงืฆืื, ืืืื ืืืืจืืืืช ืฉืื ืืฆืืื ืกืืืื ืื ืืืืื ืืขืืืื ืื. ืงืื ืืืืจืืืืช ืืืืื ืฉืืขืืชืื ืจืืืงืืช ืืฉืชื ื ืื ืืืง ืืืื ืขืฉืื ืืืืืฉื ืืขืืืคืืช ื ืืืื ืืขืืืื ืืืืฉ. ืืฆื ืฉื ื, ืงืื ืืืชืขืืื ืืขืชืื ืงืจืืืืช ืขื ืืืจืืืืช ืืืืื ืืืืื ืกืืืื ืืืื ืืืชืจ ืืืฉ ืืืคื ืื ืืืงืื. ืืืืืช ื ืืชืื ืงืื ืกืืื ืืืืืื ืืกืคืง ืชืืื ืืช ืขื ืืื ืืืืฉืช ืืชืืืืื ืืืืจืืืื ืืืืชืจ ืืืฆืขืช ืืืื ืืืคืชืืื ืืืชืืงื.
ืชืขืืืฃ ืืืืฆื Refactoring
ืืืืจ ืฉืืืืื ืืืืจืื ืืขืื ืืืจืืืืช ืืืืื, ืชืขืืืฃ ืืืื ื. ืืืืฆื ืืฉืืืืจ ืฆืจืืืื ืืืชืืื ืขื ืืืืืืื ืฉืืฉ ืืื ืืฉืคืขื ืืฉืืขืืชืืช ืขื ืืืืืช ืืชืืืืงื ืืืืืฆืืขืื ืฉื ืืืคืืืงืฆืื. ืืชืื ืืคืืจืืง ืคืื ืงืฆืืืช ืืืืืืช ืืฉืืืืช ืงืื ืืช ืืืืืงืืืช ืืืชืจ. ืืื ืืคืืกื ืขืืฆืื ืืืืืช ืืฆืืจื ืืื ืืืื ืืืืืื ืืืืจ ืืืคืฉื ืืื ื ืืืืืืช. ืืคืชืืื ืฆืจืืืื ืื ืืชืขื ืื ืฉืื ืื, ืืืกืืืจ ืืืืข ืืื ืืืฆืข ืืืืฆื ืืื ืืคืืืช ืืช ืืืืจืืืืช. ืืฉ ืืืฆืข ืืฉืืืืช ืจื-ืคืงืืืจ ืืื ืืืืจืื, ืืื ืืืืืื ืฉืืงืื ืืืฉืืจ ืคืื ืงืฆืืื ืื ืืืืจ ืื ืฉืื. ืขื ืืื ืืชืืืืกืืช ืชืืืื ืืชืืืืื ืืงืจืืืืื ืืืืชืจ, ืฆืืืชื ืคืืชืื ืืืืืื ืืืฉืื ืฉืืคืืจืื ืืืืชืืื ืืืื ืืฉืืฉ ืืช ืืืืืช ืืืื ืื ืฉื ืืคืจืืืงื.
ืืืืืง ืืืกืื ืืืืืงื
ืฉืืืืจ ืงืื ืืืืจืืืืช ืืืืื ืืื ืืืืงืืช ืืชืืืืืช ืืื ืืกืืื. ืืืกืื ืืืืงื ืืงืืฃ ืืืื ืืืืืช ืืืงืื ืืคื ื ืชืืืืช ืืฉืื ืืืื. ืืืืงืืช ืืืืื ืฆืจืืืืช ืืืกืืช ืืช ืื ื ืชืืื ืืืืฆืืข ืืืคืฉืจืืื, ืืืืืืื ืฉ-refactoring ืื ืืฆืื ืืืืื ืืืฉืื. ืืืงืจืื ืืื ืืกืจ ืืืกืื ืืืืงืืช, ืขื ืืืคืชืืื ืืืชืื ืืืืงืืช ืืคื ื ืืืฆืืข ืฉืื ืืืื. ืืืืืฅ ื ืืืื ืคืืชืื ืืื ืื-ืืืื (TDD) ืืืืื ืฉืื ืงืื ืืืฉ ืฉืืืฆื ืืืืื ื-refactoring ืืืื ืืืื ืืืืืืช ืืืกืืืืืช. ืืื ืืืืงื ืืืืืืืืื ืืืืืื ืื ืืกืืืข ืืืืืื ืจืืจืกืืืช, ืืืกืคืง ืืืืืื ืฉืืืืฆื ืืขืืืื ืืืืฉ ืืืฆืืืื ืืืืืืื.
ืขืกืืง ืืืืงืืจืืช ืขื ืงืื ืขืืืชืื
ืกืงืืจืช ืงืื ืขืืืชืื ืืืื ืืช ืืืฉืจ ืขืืกืงืื ืืชืืื ืืืช ืืขืืืช ืืืจืืืืช ืฆืืงืืืืืืช ืืืืื. ืกืงืืจืืช ืงืื ืืกืคืงืืช ืืืืื ืืช ืืืืจื ืืฆืืืช ืืืืืง ืชืืื ืืช, ืืืื ืืคืชืจืื ืืช ืืืืคืืื ืืืชืคืืก ืืขืืืช ืคืืื ืฆืืืืืืช ืฉืืืืื ืืืืืืืืืื ืขืืืืื ืืืชืขืื ืืื. ืกืงืืจืืช ืฉืืชืืคืืืช ืื ืขืืืจืืช ืืืืืื ืฉ-refactoring ืืชืืืฉืจ ืขื ืืขืื ืืคืจืืืงื ืืชืงื ื ืืงืืืื. ืกืืงืจืื ืฆืจืืืื ืืืชืืงื ืืงืจืืืืช, ืชืืืืงื ืืขืงืืืืช ืืืืืช ืืขืช ืืขืจืืช ืฉืื ืืืื ืืืฆืขืื. ืขืจืืืช ืืืงืืจืืช ืงืื ืืืืคื ืงืืืข ืืืคืืช ืชืจืืืช ืฉื ืืืืืช ืืฉืืคืืจ ืืชืืื, ืื ืฉืืืืื ืืชืืื ื ืืืงื ืืืชืจ.
ืืื Refactoring ืืื ืงืจืื ืืื
ื ืืกืืื ืืืฆืข ืืืืฉ ืชืืื ืืช ืฉืืื ืืขืืช ืืืจืืืืช ืืืืื ืืืช ืืืช ืืืื ืืืืืช ืืืจืืข ืืืกืืื. ืืืงืื ืืืช, ืืคืชืืื ืฆืจืืืื ืืืืฅ ืืืฉืช ืขืืืื ืืฆืืืจ. ืื ืืจืื ืืคืืจืืง ืชืืืื ื-refactoring ืืืฉืืืืช ืื ืืชื ืืช ืื ืืืื, ืชืื ืืชืืืืกืืช ืืงืืข ืงืื ืืื ืืื ืคืขื. ืื ืงืืข ืืฉืืืืจ ืฆืจืื ืืืืืืง ืืืกืืืืืช ืืคื ื ืฉืืืฉืืืื ืืกืขืืฃ ืืื. Refactoring ืืฆืืืจ ืืืืขืจ ืืช ืืกืืืื ืืืืืจืช ืฉืืืืืช ืืืืคืฉืจ ืฉืืคืืจืื ืืืจืืชืืื ืฉืืื ื ืืฉืืฉืื ืืช ืืืืืช ืืืื ืื ืฉื ืืคืืชืื. ืืืืจื ืืื, ืืืฉื ืื ืืคืืืชื ืืฉืืขืืชืืช ืืช ืืืืจืืืืช ืืืืืืช ืชืื ืฉืืืจื ืขื ืืฆืืืืช ืืชืืื ื.
ืืขืงื ืืฉืืืจื ืขื ืจืืืช ืืืจืืืืช
ืืคืืชืช ืืืืจืืืืช ืืื ื ืืฉืืื ืื ืคืขืืืช; ืื ืืืจืฉ ื ืืืืจ ืืชืืืืงื ืืชืืฉืืื. ืืืืจ ืขืืืื ืืืืฉ, ืฆืืืชืื ืฆืจืืืื ืืฉืื ืืื ื ืืชืื ืงืื ืกืืื ืืชืืืืื ืืขืืืื ืฉืืื ืืคืืชืื ืืื ืืขืงืื ืืืจ ืจืืืช ืืืืจืืืืช ืืืืคื ืงืืืข. ืืืื ืืื ืืืืืื ืืกืคืง ืืฉืื ืืืื ืืืช ืขื ืืืฉืช ืงืื ืืืฉ, ืืืื ืืข ืืืืืจืืืืช ืืืืื ืืืจื ืื ืืกืืก ืืงืื. ืงืืืขืช ืชืงื ื ืงืืืื ืฉืงืืืขืื ืกืคื ืืืจืืืืช ืืงืืืืื ืืืืืื ืขืงืืืืช ืืืืจื ืืคืจืืืงื. ืื ืืกืฃ, ืืฉ ืืขืจืื ืกืงืืจืืช ืงืื ืชืงืืคืชืืืช ืืื ืืืขืจืื ืืช ืจืืืช ืืืืจืืืืช ืืืืคื ืืืขืืืช ืคืืื ืฆืืืืืืช ืืคื ื ืฉืื ืืืคืืืช ืืืขืืืช ืืฉืืขืืชืืืช.
ืืกืืจืืืืืช ื ืืืื ืืืจืืืืช ืืกืืืื
ื ืืืื ืืืจืืืืช ืืขืื ืืืจืฉ ืชืืขืื ืืจืืจ. ืฆืืืชืื ืฆืจืืืื ืืชืขื ืกืคื ืืืจืืืืช, ืื ืืืืช ืืฉืื ืื ืืืืฉ ืืฉืืืืช ืขืืืื ืืืืืฆืืช ืืฉืืืจื ืขื ืคืฉืืืช ืืงืื. ืชืืขืื ืื ืืฉืืฉ ืืกืืืชื ืขืืืจ ืืืจื ืืฆืืืช ืื ืืืืืื ืืืขืชืืืืื, ืืืืืื ืฉืืืื ืขืืงืืื ืืืจ ืชืืืืืื ืขืงืืืื. ืชืืขืื ืืืืฆื ืจืืคืืงืืืจืื ื ืืืฆืืืื ืืืื ืื ืืกืคืง ืชืืืืจื ืืงืจื ืืฉืืืื ืืืืคืื ืืืขืืืช ืืืืืช ืืืืงืื ืืืจืื ืฉื ืืคืจืืืงื. ืชืืขืื ืืงืืฃ ืืืคื ืชืจืืืช ืฉื ืฉืืชืืฃ ืืืข ืืขืืืจ ืืฉืืืจ ืขื ืืืืืช ืงืื ืืืืื ืืจืื.
ืขื ืืื ืืืฆืืข ืฉืืืื ืืื, ืฆืืืชื ืคืืชืื ืืืืืื ืื ืื ืืืขืืืืช ืชืืื ืืืช ืืืืจืืืืช ืฆืืงืืืืืืช ืืืืื, ืืฉืคืจ ืืช ืืืืืช ืืชืืืืงื, ืืืคืืืช ืืืืืช ืืื ืืื ืืืืืืื ืืกืคืงืช ืคืชืจืื ืืช ืชืืื ื ืืืืืืช ืืืืื. ื ืืืืจ ืืชืืฉื, ืฉืื ืื ืืกืืจืืื ืืืืืฆืื ืืฉืืชืคืื ืื ืืืคืชื ืืฉืืืจื ืขื ืืกืืกื ืงืื ืืขืืืื ืืจื ืงืืืื.
SMART TS XL: ืคืชืจืื ืืงืืฃ ืื ืืืื ืืืจืืืืช ืฆืืงืืืืืืช
ืืื SMART TS XL ืืคืฉื ืืช ื ืืืื ืืืืจืืืืช
SMART TS XL ื ืืขื ืืืืขื ืืช ื ืืืื ืืืืจืืืืช ืืฆืืงืืืืืืช ืขื ืืื ืืชื ื ืืชืื ืงืื ืขืืืง ืืชืืื ืืช ื ืืชื ืืช ืืคืขืืื. ืื ืืืื ืืืื ื ืืชืื ืงืื ืกืืื ืงืื ืื ืฆืืื ืืืื, SMART TS XL ืืกืคืง ืืืื ืืืจืืืืช ืืคืืจืืื ืขืืืจ ืื ืคืื ืงืฆืื, ืชืื ืืืืฉืช ืืืืจืื ืฉืืื ืืืืจืืืืช ืืืจืืช ืืืกืฃ ืืืงืืื. ืืื ืืืืืื ืื ืืืื ืืืืืืืื ืฉืื ืืืคืฉืจ ืืืคืชืืื ืืืืืื ืืช ืืชืคืืืืช ืืืืจืืืืช ืขื ืคื ื ืืกืืก ืืงืื, ืืืืคืฉืจ ืืื ืืชืขืืฃ ืืืืฆื ืขืืืื ืืืืฉ ืืืชืืกืก ืขื ืชืืื ืืช ืืื ืขืืช ื ืชืื ืื. SMART TS XLืืืืืืช ืื ืืชืื ืืจืฆืืฃ ืฉื ืืืืจืืืืช ืืืืืืืช ืืขืงื ืืืจ ืืืืจืืืืช ืขื ืื ืฉืื ืื ืงืื, ืื ืฉืืืคื ืืืชื ืืืื ืืืืืืื ืืฉืืืจื ืขื ืจืืืช ืืืจืืืืช ื ืืืืืช ืืคืจืืืงืืื ืืชืคืชืืื.
ืืืื ืื ืืฉืชืื ืืฆืืจื ืืืงื ืืืจืืืืช ืขืืืื ืงืืืืืช ืฉื ืคืืชืื, ืืืกืคืง ืืฉืื ืืืื ืืืช ืืืืื ืชืืืื ืืงืืืื. ืขื ืืื ืกืืืื ืืื ื ืงืื ืืืจืืืื ืืคื ืฉืื ื ืืชืืื, SMART TS XL ืืื ืข ืืืขืืืช ืืืจืืืืช ืืืฆืืืจ. ืืืฉื ืคืจืืืงืืืืืช ืื ืืืคืฉืจืช ืืืคืชืืื ืืืคื ืืืืจืืืืช ืืืื ืืืช, ืืืคืืืช ืืืืืช ืืื ืืื ืืืฉืคืจ ืืช ืชืืืืงื ืฉื ืงืื ืืืืื ืืจืื. ืึผึฐื ืึนืกึทืฃ, SMART TS XL ืชืืื ืืืืืื ืืืืืืื, ืืชื ืขืืืื ืื ืฉืืืคืื ืขื ืืืืืช ืืืจืืืืช, ืื ืฉืขืืืจ ืืฆืืืชืื ืืขืงืื ืืืจ ืืืชืงืืืืช ืืืืชืืื ืืกืืจืืืืืช ืืืชืื.
ืชืืื ืืช ืขืืงืจืืืช ืฉื SMART TS XL ืื ืืืื ืืืจืืืืช ืฆืืงืืืืืืช
SMART TS XL ืืฆืืข ืืืืื ืชืืื ืืช ืฉืชืืื ื ื ืืืืืื ืืื ืืขืืืจ ืืฆืืืชืื ืื ืื ืืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืืขืืืืช. ืชืืื ื ืืืืืช ืืื ื ืืชืื ืืชืืืช ืืขืืืง ืฉืื, ืฉืืืื ืชืืืช ืืืืืช ืืื ืจืืืืื ืืชืืจืืื ืืืืืจืช ืืืืจืืืืช. ืขื ืืื ืืืืื ืงืฉืจืื ืืื, ืืคืชืืื ืืืืืื ืืฉื ืืช ืงืื ืืื ืืืคืืืช ืฆืืืื ืืืคืฉื ืืช ืืจืืืช ืืืงืจื. SMART TS XL ืืกืคืงืช ืื ืืืืฆืืช ืฉืืืืช ืขืืืื ืืืืืฆืืช ืืืืชืืืืช ืืืกืืก ืืงืื ืืกืคืฆืืคื, ืืืืืืื ืฉืืืืฆื ืขืืืื ืืืืฉ ืขืืืื ืืงื ื ืืื ืขื ืชืงื ื ืืชืขืฉืืื.
ืืชืจ ืขื ืื, SMART TS XL ืชืืื ืื ืืชืื ืืืจืืืืช ืืฆืืืจ, ืชืื ืืชืืงืืืช ืืฉืื ืืื ืงืื ืืื ืืืกืืก ืืงืื ืืืื. ืืืฉื ืืืืงืืช ืื ืืืคืฉืจืช ืืฆืืืชืื ืื ืื ืืืจืืืืช ืืืื ืืืื ืืช ืืืืืจื ืืคืืชืื. ืืืืืืช ืืืืืื ืืืชืงืืืืช ืฉืื ืืืืฆืจืืช ืืคืืช ืืืจืืืืช ืืงืืคืืช, ืืืืคืฉืจืืช ืืฆืืืชืื ืืืืืื ืืืฆื ืืืืจืืืืช ืืืคืฆืช ืืืืืืช ืืืืจืื ืืกืืืื ืืืื. ื ืืชื ืืืชืืื ืืช ืืืืืืช ืืืื ืืืชืืกืก ืขื ืืขืืคืืช ืืฆืืืช, ืื ืฉืืกืคืง ืืืืฉืืช ืืืืฉืื ืืกืืจืืืืืช ื ืืืื ืืืจืืืืช.
ืืกืืืื, SMART TS XL ืืฆืืข ืืืืื ืืืงื ืฉื ืชืืื ืืช ืฉืืืคืืืช ืืืชื ืืืื ืืืื ื ืื ืืืื ืืืจืืืืช ืฆืืงืืืืืืช. ืื ืืชืื ืืขืืืง, ืืืฉืื ืืืื ืืืช ืืืืืืืช ืืืืืื ืืืืืืืืืืช ืฉืื ืืืืืืื ืฉืฆืืืชื ืืคืืชืื ืืืืืื ืืฉืืืจ ืขื ืืกืืกื ืงืื ื ืงืืื, ืืขืืืื ืื ืืชื ืื ืืืจืืื. ืขื ืืื ืฉืืืื SMART TS XL ืืชืื ืืจืืืืช ืืขืืืื ืฉืืื, ืฆืืืชืื ืืืืืื ืืืคืืืช ืืืืืช ืืื ืืื, ืืฉืคืจ ืืช ืืืืืช ืืชืืืืงื ืืืืืืื ืืช ืืืฆืืื ืืจืืืช ืืืืื ืฉื ืคืจืืืงืื ืืชืืื ื ืฉืืื.
ืกืืืื
ื ืืืื ืืืืจืืืืช ืืฆืืงืืืืืืช ืืื ืืืื ืืกืืกื ืฉื ืคืืชืื ืชืืื ื ืืืืืชืืช ืื ืืชื ืช ืืชืืืืงื. ืืืจืืืืช ืืืืื ืขืืืื ืืืคืจืืข ืืืจืืื, ืืืืืืจ ืืช ืืกืืืื ืืคืืืื ืืืกืื ืืช ืืืืฆื ืืืืืงื. ืืืคืื ืื ืืฉืืื ืืื ืืืจืฉ ืืืฉื ืืชืืฉืืช ืืืฉืืืช ืฉืืืืช ืงืืืื ืืืืืืืช, ืขืืืื ืืกืืจืืื ืืืืฉ ืื ืืืืจ ืืชืืฉื. ืฆืืืชื ืคืืชืื ืืืืืื ืืืืฅ ืืชืืืืืืืืืช ืืืืืืฉืืช ืคืฉืืืช ืืืื ืืคืืืข ืืืืฆืืขืื. ืืื ืืงืืช ืืืื ืคืืจืืง ืคืื ืงืฆืืืช ืืืืืืช, ืืืฉืื ืืคืืกื ืขืืฆืื ืืคืืฉืื ืืื ื ืืงืจื ืชืืจืืืช ืืืืคื ืืฉืืขืืชื ืืืคืืชืช ืืืืจืืืืช. ืขื ืืืช, ืืฉืืช ื ืืืื ืืืจืืืืช ืืจ-ืงืืืื ืืืจืฉืช ืืืชืจ ืืคืจืงืืืงืืช ืืื ืืืช; ืื ืืืจืฉ ืืืื ืืืื ืื ืืืฉืชืืืื ืืฆืืจื ืืืงื ืืืจืืืช ืืขืืืื ืฉื ืืคืืชืื, ืืืกืคืงืื ืชืืื ืืช ืืืื ืืืช ืืืืืฆืืช ื ืืชื ืืช ืืคืขืืื. ืืื ืืืื ืืืื, ืืืจืืืืช ืืืืื ืืืฆืืืจ, ืืืืืืื ืืืืืืช ืืื ืืื ืืืืืื ืขื ืืืืืช ืืืื ืื ืฉื ืืคืจืืืงื ืืืืื ืืช ืืชืืื ื.
SMART TS XL ืืชืืื ืืคืชืจืื ืืืจืื ืขืืืจ ืฆืืืชืื ืืืืงืฉืื ืื ืื ืืช ืืืืจืืืืช ืืฆืืงืืืืืืช ืืืขืืืืช. ื ืืชืื ืืงืื ืืขืืืง, ืืืฉืื ืืืื ืืืช ืืืืืืืช ืืืืืื ืืืืืืืืืืช ืืขืฆืืืืช ืืคืชืืื ืืืืืช ืืืืคื ืืืขืืืช ืืืจืืืืช ืืืืคื ืืืื. ืืืืืืช ืฉื ืืืื ืืืฆืืจ ืืคืืช ืืืจืืืืช ืืคืืจืืืช ืืืืืืืฉ ืชืืืช ืงืจืืืืช ืืืคืฉืจืช ืงืืืช ืืืืืืช ืืืฉืืืช ืืืืื ืืืืฆื ืืฉืื ืื ืืืืฉ. ืืชืจื ืืื, ืขื ืืื ืืชืืงืืืช ืื ืืชืื ืืฆืืืจ, SMART TS XL ืืืืื ืฉื ืืืื ืืืืจืืืืช ืื ืืขืื ืืช ืืืืจืืช ืืคืืชืื. ืืื ืฉืคืจืืืงืื ืชืืื ื ืืืืื ืืืชืคืชืืื, ืชืคืงืืื ืฉื ืืื ื ืืชืื ืงืื ืกืืื ืืืงืื ืืื SMART TS XL ืืืคื ืืืืืช ืืคืืื ืืืชืจ ืงืจืืื. ืฉืืืื SMART TS XL ืืชืื ืืจืืืืช ืขืืืื ืฉื ืคืืชืื ืืืืื ืฉืืกืืกื ืงืื ืืืฉืืจื ื ืงืืื, ื ืืชื ืื ืืืจืืื ืื ืืชื ืื ืืชืืืืงื, ืืืกืืคื ืฉื ืืืจ ืชืืจืืื ืืืฆืืืช ืชืืื ื ืืจืืืช ืืืื ืืืืคืืชืช ืืืื ืืืื ื.