代码背后的智慧:20条编程感悟

打印 上一主题 下一主题

主题 1900|帖子 1900|积分 5700

各人好,我是木宛哥;在 10余年的工作履历让我深刻体会到软件开辟不仅仅是写代码,更是一个系统化的交付过程。
为此我总结了20条编程感悟,涵盖了代码规范、计划原则、测试方法与交付流程等多个方面;​通过遵循代码规范,让代码更加可读与可维护,同时合理的计划能够有用应对需求厘革,模块化的单元测试又确保了产品的可靠性,顾全的交付流程末了提升了项目质量。
希望这些感悟更多步伐员提供参考,帮助各人在编程的道路上不绝进步。
1. 清晰的命名

● 原则:代码应该易于阅读和理解;比方:变量、函数和类的名称应能清楚表达其意图;
● 示例:
  1. // 明确表示学生数量
  2. int numberOfStudents = 30;
  3. /**
  4. * 计算圆面积
  5. * @param radius 半径
  6. * @return 面积
  7. */
  8. public double calculateAreaOfCircle(double radius) {
  9.     return Math.PI * radius * radius;
  10. }
复制代码
2. 使用注释

● 原则:在复杂或重要的代码段添加注释,帮助他人理解;
● 示例:
  1. /**
  2. * 计算给定列表的平均值
  3. *
  4. * @param numbers 要计算的数字列表
  5. * @return 返回数字的平均值,如果列表为空则返回0
  6. */
  7. public static double calculateAverage(List<Double> numbers) {
  8.     if (numbers == null || numbers.isEmpty()) {
  9.         return 0;
  10.     }
  11.     double sum = 0.0; // 用于保存数字的总和
  12.     int count = 0; // 用于记录有效数字的数量
  13.     // 遍历列表中的每个数字并计算总和
  14.     //【注意】:检查列表中的每个元素是否为 null,需要过滤
  15.     for (Double num : numbers) {
  16.         if (num != null) {
  17.             sum += num;
  18.             count++;
  19.         }
  20.     }
  21.     if (count == 0) {
  22.         return 0;
  23.     }
  24.     double average = sum / count;
  25.     return average;
  26. }
复制代码
3. 同等的编码风格

● 原则:遵循团队的编码标准,保持代码风格同等;
● 示例:使用同一的缩进和大括号位置。比方 IDEA 等 IDE 中配置同一的 CodeStyle:Alibaba-CodeStyle 、Google-CodeStyle 等;
4. 代码模块化

● 原则:将功能分解成小模块,增加重用性;
● 示例:
  1. public class Calculator {
  2.     /**
  3.      * 加
  4.      * @param a
  5.      * @param b
  6.      * @return
  7.      */
  8.     public int add(int a, int b) {
  9.         return a + b;
  10.     }
  11.     /**
  12.      * 减
  13.      * @param a
  14.      * @param b
  15.      * @return
  16.      */
  17.     public int subtract(int a, int b) {
  18.         return a - b;
  19.     }
  20. }
复制代码
5. 避免重复代码

● 原则:遵循DRY原则(Don’t Repeat Yourself);
● 示例:
  1. //不好的实践:重复
  2. public class Calculator {
  3.     public void addAndPrint(int a, int b) {
  4.         int result = a + b;
  5.         System.out.println("Result: " + result);
  6.     }
  7.     public void addAndPrintAnother(int x, int y) {
  8.         int result = x + y;
  9.         System.out.println("Result: " + result);
  10.     }
  11. }
  12. //好的实践:我们可以提取出一个公共方法来遵循DRY原则:
  13. public class Calculator {
  14.     public void addAndPrint(int a, int b) {
  15.         printResult(add(a, b));
  16.     }
  17.     public int add(int a, int b) {
  18.         return a + b;
  19.     }
  20.     private void printResult(int result) {
  21.         System.out.println("Result: " + result);
  22.     }
  23. }
复制代码
6. 依赖接口而不是具体的实现

● 原则:依赖接口而不是具体的实现,增强灵活性;
● 示例:
  1. public interface Shape {
  2.     double area();
  3. }
  4. public class Circle implements Shape {
  5.     private double radius;
  6.     public Circle(double radius) {
  7.         this.radius = radius;
  8.     }
  9.     @Override
  10.     public double area() {
  11.         return Math.PI * radius * radius;
  12.     }
  13. }
  14. public class Square implements Shape {
  15.     private double sideLength;
  16.     public Square(double sideLength) {
  17.         this.sideLength = sideLength;
  18.     }
  19.     @Override
  20.     public double area() {
  21.         return sideLength * sideLength;
  22.     }
  23. }
  24. //依赖接口而不是具体的实现
  25. void printf(Shape shape);
复制代码
7. 避免魔法数字

● 原则:使用常量代替魔法数字;
● 示例:
  1. final double FIXED_RATE = 3
  2. double area = FIXED_NO * radius
复制代码
8. 简化条件语句

● 原则:避免复杂的条件逻辑。用快速 return 来减少 if 嵌套层次;
● 示例:
[code]//不推荐:嵌套太深public void checkUser(User user) {    if (user != null) {        if (user.getAge() > 18) {            if (user.isActive()) {                // 允许访问                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() 为什么要做(why)->要做什么(what)->如何去做(how) 体系化思索;</p>○ 再从业务用例分析->系统依赖分析->领域模子分析->架构计划分析->时序图分析等落地最终的系分;
18. 重视代码评审

● 原则:定期进行代码评审,提高代码质量,提高团队研发意识;
19. 重视每一次交付

● 原则:
○ 事前锁定资源,上下游告竣同等,明白里程碑计划;
○ 事中按需推进,每周项目进度同步,实时通晒风险;
○ 事后构造复盘以及关注业务数据(关注代价)
20.重视交付质量

● 原则:新功能需多考虑灰度验证
○ 后端服务:可按分组进行灰度验证(gray 分组->default 分组)
○ 客户端:小范围升级验证无标题后,渐渐放量升级;
写在末了

欢迎关注我的公众号:编程启示录,第一时间获取最新消息;
微信公众号

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表