当前位置: 首页 > news >正文

个人编程原则总结(不喜勿喷)

目录

1. 规范代码

2. 数据库设计

3. 代码管理

4. 编码技巧

5. 输入与输出

6. 代码的清理与优化

7. 命名与结构

8. 代码的进化与维护

结语


在软件开发过程中,遵循良好的编程规范和管理原则对于项目的成功至关重要。本文整理并优化了一些常见的编程原则,结合实际应用场景,提供了系统化的建议,帮助开发者写出更高效、可维护的代码。

1. 规范代码

1.1 使用枚举(Enum)

  • 原则:在所有该使用枚举的地方,必须使用枚举。这不仅有助于提高代码的可读性,还能避免魔法值(Magic Number)的出现,减少错误的概率。

1.2 提示文本资源化

  • 原则:所有提示文本应集中存放到资源文件中。这样做可以方便进行国际化(i18n),同时使得代码更加整洁、易于维护。

1.3 注释与文档

  • 原则:每一个方法、每一个字段都要有清晰的说明。对于每一个参数,也要进行详细的描述。这有助于团队成员快速理解代码逻辑,避免误用。
2. 数据库设计

2.1 数据库字段说明

  • 原则:每一个数据库字段都要有详细的中文说明。对于使用枚举的字段,必须列出所有的枚举项。这能够极大地提高数据库的可维护性和可理解性,尤其是在数据库结构复杂的情况下。
3. 代码管理

3.1 版本控制

  • 原则:每日提交次数不超过10次,避免版本过多。每次提交的备注必须写清楚,确保版本历史的清晰性和可追溯性。

3.2 条件表达与循环控制

  • 条件放前面:尽量将条件判断放在前面,减少代码嵌套层级,这使代码更简洁、易读。
    • 循环控制:使用continue跳过当前循环,break终止循环,return退出方法。合理使用这些控制语句可以提高代码的执行效率和逻辑清晰度。
4. 编码技巧

4.1 Solr字段顺序

  • 原则:Solr字段应该遵循有序原则,即从小到大、由低到高排序。尽量使用整数类型,能提高检索性能。

4.2 字典顺序的重要性

  • 原则:在使用字典时,int类型的代码值应保持顺序一致,这样在进行范围搜索时,可以提高查询效率。

4.3 避免在SQL中使用复杂逻辑

  • 原则:尽量避免在SQL语句中写复杂的CASE WHEN逻辑,这些操作应尽量在代码层面处理,以保持SQL语句的简洁性和易维护性。
5. 输入与输出

5.1 参数精简

  • 原则:输入参数和输出参数应尽量精简,严格限制其数量,并使用不同的对象如VO(Value Object)、BO(Business Object)、DO(Data Object)等来进行区分和管理。
6. 代码的清理与优化

6.1 不必要的代码和文件

  • 原则:坚决删掉未使用的代码、文件、数据库表、视图和存储过程,以及未使用的引用。保持项目干净简洁,减少技术债务。

6.2 理解代码

  • 原则:必须读懂自己接触项目的每一行代码。每天可以打印出来读一行,也要确保理解代码的目的和实现细节。

6.3 用途说明

  • 原则:每个类、方法、字段必须有清晰的用途说明,这有助于团队协作和代码的长期维护。
7. 命名与结构

7.1 统一的命名规则

  • 原则:命名必须具有关联性,见名知意。例如:
    • DataAccess相关的变量名要带上dal
    • Service相关的变量名要加上Service后缀。
    • 引用框架集的数据要加上utils

7.2 大小写与命名规范

  • 小驼峰命名法:用于方法名、变量名。
  • 大驼峰命名法:用于类名、表名。
  • 大写字母与下划线命名法:用于枚举项、常量。
8. 代码的进化与维护

8.1 三层结构

  • 原则:严格遵守三层架构设计,保持控制器层(Controller)的简洁,业务逻辑层(Service)的复杂处理,数据访问层(Data Access)的数据提取与构造。

8.2 枚举的广泛应用

  • 原则:在数据库字段、代码、实体中,尽量使用枚举来表达固定的选项,保证代码和数据的整合性和一致性。

8.3 数据库字段的说明

  • 原则:每个数据库字段都应有详细的说明文档,便于维护和理解。

结语

通过遵循以上编程原则和技巧,开发团队能够写出更加高效、可维护、易扩展的代码。这不仅有助于项目的顺利进行,还能为团队的长期合作奠定坚实的基础。定期回顾和优化这些规则,将有助于持续改进代码质量和团队效率。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 前缀和处理数组区间之和问题
  • Vue3项目创建及相关配置
  • C++ primer plus 第17 章 输入、输出和文件:文件输入和输出02:流状态检查和is_open():打开多个文件:命令行处理技术
  • Python配置镜像
  • 【代理模式AOP】2. @Aspect的代码实战(比较Cglib和动态JDK)
  • 【STM32】USART串口和I2C通信
  • 【Canvas与艺术】黄色立体感放射光芒五角星
  • MATLAB优化模型(3)
  • Python新手错误集锦(PyCharm)
  • Django学习-数据迁移与数据导入导出
  • BIMRender渲染器插件上线 |一款免费的模型实时渲染插件
  • AI在医学领域:使用眼底图像和基线屈光数据来定量预测近视
  • 浅谈面向数据报的协议-UDP协议
  • 一文带你快速了解——LVS负载均衡集群
  • [Unity]在场景中随机生成不同位置且不重叠的物体
  • [NodeJS] 关于Buffer
  • Apache的基本使用
  • Bootstrap JS插件Alert源码分析
  • create-react-app项目添加less配置
  • Promise初体验
  • Python学习笔记 字符串拼接
  • SQL 难点解决:记录的引用
  • XML已死 ?
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从0实现一个tiny react(三)生命周期
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 使用putty远程连接linux
  • 使用SAX解析XML
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​水经微图Web1.5.0版即将上线
  • # 数论-逆元
  • #565. 查找之大编号
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (13):Silverlight 2 数据与通信之WebRequest
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (笔记)M1使用hombrew安装qemu
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (十)T检验-第一部分
  • (十六)一篇文章学会Java的常用API
  • (学习日记)2024.02.29:UCOSIII第二节
  • .NET WPF 抖动动画
  • .net 后台导出excel ,word
  • .NET 设计模式初探
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET简谈设计模式之(单件模式)
  • .NET中使用Protobuffer 实现序列化和反序列化
  • ??在JSP中,java和JavaScript如何交互?
  • []指针
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)