ํฐ์คํ ๋ฆฌ ๋ทฐ
7์ฅ ์ค๋ฅ์ฒ๋ฆฌ์ ๋๋ค
๊นจ๋ํ๊ฒ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ ์์ต๋๋ค.
1. ์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ์ฒ๋ฆฌ
BAD ์์
if (handle != DeviceHandle.INVALID):
ํจ์1()
if ():
ํจ์2()
else:
log("์ค๋ฅ2")
log("์ค๋ฅ1")
}
์ด๋ฐ ์ฝ๋ ๋ณด๋ค๋
try catch ๋ฌธ์ผ๋ก ์์ฑํ๋๊ฒ ์ข์
2. ์ค๋ฅ ๋ฉ์ธ์ง
์์ธ๋ฅผ ๋์ง๋ ์ด๋ค ์ค๋ฅ์ธ์ง ์ถ๊ฐ๋ก ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉด ์ข์.
ex. log("Device response exception")
3. ํธ์ถ์๋ฅผ ๊ณ ๋ ค
์์ธ๋ฅผ ๋ฆฌํดํ๋ ํด๋์ค๋ฅผ ์ ์ํ์ฌ ์๋ฌ์ฒ๋ฆฌ
BAD ์์
try {
port.open();
} catch (e1) {
reportPortError(e);
log("Device ~ e");
} catch (e2){
report~Error(e);
log("~");
}
...
์ด๋ ๊ฒ ๊ฐ๊ฐ ์๋ฌ๋ง๋ค ์๋ฌ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๋ถ๋ถ์ ์์ฑํด์ฃผ๊ธฐ ๋ณด๋ค๋
์๋์ฒ๋ผ
LocalPort port = new LocalPort(12);
try {
port.open();
} catch (PortDeviceFailure e) {
reportError(e);
logger.log(e.getMessage() , 3);
} finally {
..
}
๋ผ์ด๋ธ๋ฌ๋ฆฌ API๋ฅผ ๊ฐ์ธ๋ฉด์ ํ๋์ ์์ธ ์ ํ๊ณผ log๋ฅผ ๋ฐํํ๋ class๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
-> ๊ทธ๋ ๊ฒ๋๋ฉด ์๋ฌ๋ง๋ค log ์์ฑ์ ํ์ง ์์๋ ๋จ.
4. catch์์ ๋ ผ๋ฆฌ ์ ์ด x (์ ์ ํ๋ฆ์ ์ ์ํ๋ผ)
BAD ์์
์๋น ๋น์ฉ ์ฒญ๊ตฌํ๋ ์ฝ๋์ ๋๋ค.
try {
MealExpenses expense = expenseReportDAO.getMeals(employee.getID());
m_total += expenses.getTotal();
} catch (MealExpensesNotFound e) {
m_total += getMealPerDiem();
}
try {
// ์๋น ๋๋์ง ์ ๋ณด ๊ฐ์ ธ์ด
//์ง์์ด ์ฒญ๊ตฌํ ์๋น๋ฅผ ์ด๊ณ์ ๋ํจ()
} catch () { // ์๋น ๋น์ฉ ์ฒญ๊ตฌ ํ์ง ์์
// ์ผ์ผ ๊ธฐ๋ณธ ์๋น๋ฅผ ์ด๊ณ์ ๋ํจ()
}
์ด๊ฑฐ ๋ณด๋ค๋
MealExpenses expense = expenseReportDAO.getMeals(employee.getID());
m_total += expenses.getTotal();
expenseReportDAO๋ฅผ ์์ ํ์ฌ ํญ์ MealExpenses ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋๋ก ํจ.
์ฒญ๊ตฌํ ์๋น๊ฐ ์๋ค๋ฉด MealExpenses ๊ฐ์ฒด ๋ด๋ถ์์ ์ผ์ผ ๊ธฐ๋ณธ ์๋น๋ฅผ ๋ฐํํ๊ฒ ํจ.
์ด๋ฐ์์ผ๋ก catch์์ ํ๋ฆ์ ์ ์ํ๊ธฐ๋ณด๋จ ์ ์ ํ๋ฆ์ผ๋ก ์ฝ๋๋ฅผ ์ ์ํ๋ฉด ์ข๋ค๊ณ ํจ.
5. null ๋ฐํ x
if something != null { }
์ด๋ฐ์์ผ๋ก ์ฒดํฌํด์ผํ๋๋ฐ
ํน์ฌ๋ผ๋ ๋น ๋จ๋ฆฌ๋ฉด ํฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ผ๋ ์ง์ํ๋ฉด ์ข๋ค๊ณ ํจ.
6. null ์ ๋ฌ x
null ์ ๋ฌ์ NullPointerException ๋ฐ์ ์ฃผ์
assert ๋ฌธ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ์ข์
public class MetricsCalculator {
public double xProjection(Point p1, Point p2) {
assert p1 != null : "p1 is null";
assert p2 != null : "p2 is null";
return (p2.x - p1.x) * 1.5;
}
}
๊ฐ์ฌํฉ๋๋ค
- Total
- Today
- Yesterday
- swift queryitem encode
- focus timer ์ดํ
- swift filemanager excel
- swift network refactoring
- readysay
- chatgpt rag llm
- llm csv
- ๊ณต๋ถ ํ์ด๋จธ ์ดํ
- swift urlsession network module
- swift ์๊ฐ
- swift urlsession module
- ๋ ๋์ธ์ด
- swift ์์ ๊ฐ์ ธ์ค๊ธฐ
- rag llm pdf
- swift urlsession refactoring
- ๋ ๋์ธ์ด ์ดํ
- llm pdf rag
- swift ์์ ์ฝ๊ธฐ
- swift urlsession ๊ณตํตํ
- swift network module
- swift get excel
- swift ๋คํธ์ํฌ ๋ชจ๋ํ
- filemanager excel read
- swift network ๊ณตํตํ
- swift filemanager get excel
- rag ๊ธฐ๋ฐ llm ์ฑ๋ด
- swift urlcomponent encode
- rag ๊ธฐ๋ฐ llm
- swift excel read
- ์๋์ํํธ ๋ ์ด์ธ์ด
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |