狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

代碼背后的智慧:20條編程感悟

freeflydom
2024年11月14日 9:53 本文熱度 551

1. 清晰的命名

● 原則:代碼應(yīng)該易于閱讀和理解;例如:變量、函數(shù)和類的名稱應(yīng)能清楚表達(dá)其意圖;

● 示例:

// 明確表示學(xué)生數(shù)量
int numberOfStudents = 30; 
/**
 * 計(jì)算圓面積
 * @param radius 半徑
 * @return 面積
 */
public double calculateAreaOfCircle(double radius) {
    return Math.PI * radius * radius;
}

2. 使用注釋

● 原則:在復(fù)雜或重要的代碼段添加注釋,幫助他人理解;

● 示例:

/**
 * 計(jì)算給定列表的平均值
 *
 * @param numbers 要計(jì)算的數(shù)字列表
 * @return 返回?cái)?shù)字的平均值,如果列表為空則返回0
 */
public static double calculateAverage(List<Double> numbers) {
    if (numbers == null || numbers.isEmpty()) {
        return 0;
    }
    double sum = 0.0; // 用于保存數(shù)字的總和
    int count = 0; // 用于記錄有效數(shù)字的數(shù)量
    // 遍歷列表中的每個(gè)數(shù)字并計(jì)算總和
    //【注意】:檢查列表中的每個(gè)元素是否為 null,需要過(guò)濾
    for (Double num : numbers) {
        if (num != null) {
            sum += num; 
            count++;
        }
    }
    if (count == 0) {
        return 0;
    }
    double average = sum / count;
    return average;
}

3. 一致的編碼風(fēng)格

● 原則:遵循團(tuán)隊(duì)的編碼標(biāo)準(zhǔn),保持代碼風(fēng)格一致;

● 示例:使用統(tǒng)一的縮進(jìn)和大括號(hào)位置。例如 IDEA 等 IDE 中配置統(tǒng)一的 CodeStyle:Alibaba-CodeStyle 、Google-CodeStyle 等;

4. 代碼模塊化

● 原則:將功能分解成小模塊,增加重用性;

● 示例:

public class Calculator {
    /**
     * 加
     * @param a
     * @param b
     * @return
     */
    public int add(int a, int b) {
        return a + b;
    }
    /**
     * 減
     * @param a
     * @param b
     * @return
     */
    public int subtract(int a, int b) {
        return a - b;
    }
}

5. 避免重復(fù)代碼

● 原則:遵循DRY原則(Don’t Repeat Yourself);

● 示例:

//不好的實(shí)踐:重復(fù)
public class Calculator {
    public void addAndPrint(int a, int b) {
        int result = a + b;
        System.out.println("Result: " + result);
    }
    public void addAndPrintAnother(int x, int y) {
        int result = x + y;
        System.out.println("Result: " + result);
    }
}
//好的實(shí)踐:我們可以提取出一個(gè)公共方法來(lái)遵循DRY原則:
public class Calculator {
    public void addAndPrint(int a, int b) {
        printResult(add(a, b));
    }
    public int add(int a, int b) {
        return a + b;
    }
    private void printResult(int result) {
        System.out.println("Result: " + result);
    }
}

6. 依賴接口而不是具體的實(shí)現(xiàn)

● 原則:依賴接口而不是具體的實(shí)現(xiàn),增強(qiáng)靈活性;

● 示例:


public interface Shape {
    double area();
}
public class Circle implements Shape {
    private double radius;
    public Circle(double radius) {
        this.radius = radius;
    }
    @Override
    public double area() {
        return Math.PI * radius * radius;
    }
}
public class Square implements Shape {
    private double sideLength;
    public Square(double sideLength) {
        this.sideLength = sideLength;
    }
    @Override
    public double area() {
        return sideLength * sideLength;
    }
}
//依賴接口而不是具體的實(shí)現(xiàn)
void printf(Shape shape);

7. 避免魔法數(shù)字

● 原則:使用常量代替魔法數(shù)字;

● 示例:


final double FIXED_RATE = 3
double area = FIXED_NO * radius

8. 簡(jiǎn)化條件語(yǔ)句

● 原則:避免復(fù)雜的條件邏輯。用快速 return 來(lái)減少 if 嵌套層次;

● 示例:


//不推薦:嵌套太深
public void checkUser(User user) {
    if (user != null) {
        if (user.getAge() > 18) {
            if (user.isActive()) {
                // 允許訪問(wèn)
                System.out.println("Access granted");
            } else {
                System.out.println("User is not active");
            }
        } else {
            System.out.println("User is underage");
        }
    } else {
        System.out.println("User is null");
    }
}
//推薦:快速失敗返回
public void checkUser(User user) {
    if (user == null) {
        System.out.println("User is null");
        return;
    }
    
    if (user.getAge() <= 18) {
        System.out.println("User is underage");
        return;
    }
    if (!user.isActive()) {
        System.out.println("User is not active");
        return;
    }
    // 允許訪問(wèn)
    System.out.println("Access granted");
}

9. 異常處理

● 原則:通過(guò)適當(dāng)?shù)漠惓L幚硖岣叱绦虻慕研裕?/p>

● 示例:


//異常
try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    log.error("非法參數(shù),不能被零除");
}
//熔斷
try (Entry entry = SphU.entry("resourceName")) {  
    // 你的業(yè)務(wù)邏輯  
} catch (BlockException ex) {  
    // 處理被阻止的請(qǐng)求  
}

10. 標(biāo)準(zhǔn)化錯(cuò)誤日志處理

● 原則:統(tǒng)一錯(cuò)誤處理的方式和日志記錄。方便日志采集和告警配置;

● 示例:


public void logError(String message) {
    log.error("ERROR|Trace:{0}|Msg:{1} " Context.getTrace(), message);
}

11. 方法參數(shù)不宜過(guò)長(zhǎng)

● 原則:方法參數(shù)應(yīng)盡量少,避免混亂,超過(guò)3個(gè)推薦封裝成模型;

● 示例:


//不推薦
void createUser(String name,int age,String email);
//推薦
public class UserService {
    public void createUser(User user) {
        
    }
}
class User {
    private String name;
    private int age;
    private String email;
    public User(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }
    // Getters and Setters
}

12. 使用現(xiàn)有工具類來(lái)簡(jiǎn)化操作

● 原則:優(yōu)先使用現(xiàn)有工具類 如apache.commons來(lái)簡(jiǎn)化操作

● 示例:


StringUtils.isNotEmpty("");
CollectionUtils.isNotEmpty()

13. 盡量使用不變的變量

● 原則:使用final關(guān)鍵字聲明不可變的變量,提高代碼的可靠性;

● 示例:


final int MAX_VALUE = 100;
ImmutableList.of();

14. 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)

● 原則:先寫(xiě)測(cè)試,再寫(xiě)代碼,確保代碼的可測(cè)試性;

● 示例:


@Test
public void testAdd() {
    Calculator calculator = new Calculator();
    assertEquals(5, calculator.add(2, 3));
}

15. 避免過(guò)度優(yōu)化

● 原則:優(yōu)先考慮代碼的可讀性,優(yōu)化通常是在識(shí)別出性能問(wèn)題后進(jìn)行的;

16. 使用版本控制

● 原則:使用版本控制工具(git)管理代碼變化;

17. 重視系分文檔

● 原則:

○ 開(kāi)發(fā)前,考慮清楚為什么要做這個(gè)需求。從背景及現(xiàn)狀分析->為什么要做(why)->要做什么(what)->如何去做(how) 體系化思考;

○ 再?gòu)臉I(yè)務(wù)用例分析->系統(tǒng)依賴分析->領(lǐng)域模型分析->架構(gòu)設(shè)計(jì)分析->時(shí)序圖分析等落地最終的系分;

18. 重視代碼評(píng)審

● 原則:定期進(jìn)行代碼評(píng)審,提高代碼質(zhì)量,提高團(tuán)隊(duì)研發(fā)意識(shí);

19. 重視每一次交付

● 原則:

○ 事前鎖定資源,上下游達(dá)成一致,明確里程碑計(jì)劃;

○ 事中按需推進(jìn),每周項(xiàng)目進(jìn)度同步,及時(shí)通曬風(fēng)險(xiǎn);

○ 事后組織復(fù)盤(pán)以及關(guān)注業(yè)務(wù)數(shù)據(jù)(關(guān)注價(jià)值)

20.重視交付質(zhì)量

● 原則:新功能需多考慮灰度驗(yàn)證

○ 后端服務(wù):可按分組進(jìn)行灰度驗(yàn)證(gray 分組->default 分組)

○ 客戶端:小范圍升級(jí)驗(yàn)證無(wú)問(wèn)題后,逐步放量升級(jí);



該文章在 2024/11/14 9:53:24 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved