带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(1)

简介: 带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(1)

开发规约的意义与细则

image.png作者:鸽子

image.png出品:大淘宝技术

 

 

众所周知,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全。试想如果没有限速,没有红绿灯,没有靠右行驶条款,谁还敢上路。消防局最主要的工作不是灭火,而是为了不发生火灾建立很多规范。如果发生火灾,说明前面的工作没有做到位。同理,对软件来说,开发规约绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,推行相对标准化,以一种普遍认可的方式一起做事。

综上所述,开发规约的目标:

码出高效:标准统一,提升沟通效率和研发效能。

码出质量:防患未然,提升质量意识和系统可维护性,降低故障率。码出情怀:工匠精神,追求极致的卓越精神,打磨精品代码。

开发规约从无到有,只是短期的目标;使大家遵守开发规约的成本极大降低,发布上线的应用符合开发规约是中期目标;而远期目标是从有到无,因为人人自觉遵守,规约和谐地融入代码的字里行间,规约似乎消失了,但又无处不在。

最近,结合新品技术团队的现状,分析了系统架构背后的问题,并制定了一系列团队开发规约,可以从以下三方面展开

 

大纲

 

  1. 开发规约之道
  2. 开发规约之术
  3. 开发规约执行方法论

 

开发规约之道

 

1.代码规范不应该被定为 KPI

大部分团队应该都是有KPI的,而且一般重要的事情都会被定成  KPI,所以有些团队为了强调代码规范,将其定为某些员工的KPI,但是这并不能达成好的效果,因为代码规范不应该是一个文档,代码规范应该是一种行为,一种持续的行为,而 KPI是要求可以量化有明确目标的。若把代码规范当KPI,背了KPI的员工为了让KPI可量化,通常情况会写出来一个代码规范文档,众所周知文档最可量化的当然是页数,故最终可能会产出一个几十页的代码规范, 几乎面面俱到,看起来很高大上。但是要求大家按照文档落地就很难,让大家理解认可执行它,并且还需要有相应的监督机制、审查机制来保证大家确实按规范在写代码。结合当前团队现状考虑,后者是整个代码规范实施的难点,

 

 

 

因为大部分人会赞同:一个被 100% 彻底执行了的 40 分代码规范应该是好于一个被执行了 40%的100分代码规范。

 

2.制定代码规范要循序渐进

代码规约的实施不是一蹴而就的,是一个过程,需要团队能够在编写代码过程完全做到规范是需要时间的,所以初期技术有必要在评估项目开发周期中做好时间buffer,后期慢慢形成一种行为意识时,便是做到从无到有的状态。   通常情况新项目需求节奏都会非常快,基础框架、基础组件、大批量业务需求要开发,又因为是新项目,通常不会有特别多的人力投入,这种情况下,一个很严格冗长的代码规范,要求大家在拼命跑的过程中还要去理解执行你的规范,可能性大吗?所以这个时期的代码规范需要非常简单易于理解,要在所有人即使在赶需求,也能忍受的范围内制定规范。这个阶段最急迫的需求是用简单的代码规范让大家养成习惯,提升意识,宣告这个项目是有规范的。

 

3.制定代码规范要独裁

上面一段提到代码规范应该循序渐进,之前看到过的一种做法是:团队内大家一起讨论,民主决定某一些规范的细节,因为这样可以出来一个适配这个团队的代码规范。

这听起来很美好,非常民主,但是这么做的结果是什么?我猜应该会有很多人又回忆起“大括号应不应该换行”、“else 是否应该换行”、“是否允许空两行”、“JS 结尾带不带分号”等类似的争论,然而这些争论是有必要的吗?说白了,大部分争论找的理由都只是在为自己的代码习惯争取更多空间。这样的争论还只是“民主”引发问题的开始,更严重的是这会在所有开发人员心中形成一种“规范是可以商量和讨论的”心理暗示,这必对后续规范的执行成为阻碍,特别是一些本身就有争议的点。

正因为上述原因,制定规范时需要“独裁”。我们的目标很清晰,就是要求代码写法一致,“独裁”的基础上可以选择一个第三方的标准,例如细的条目可以完全选择集团内部的标准。首先可以保证的是这些规范都是有理有据; 其次,“独裁”使用的规范来源于权威的标准体系,对团队内所有人公平;最后,这样的规范和行业更亲近。

 

带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(2)https://developer.aliyun.com/article/1339988?groupCode=taobaotech

相关文章
|
缓存 Unix 程序员
《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——1.4 上下文切换
在同一个进程内从一个线程切换到另一个线程的操作称为线程切换(thread switch)。因为进程不变,所以不需要改变地址空间的映射关系。只有上一段话中列出的寄存器和其他项需要保存和恢复。和进程的上下文切换相比,线程切换较少的开销是使用线程的另一个优点。
1136 0
|
13天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23495 11
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
2天前
|
人工智能 BI 持续交付
Claude Code 深度适配 DeepSeek V4-Pro 实测:全场景通关与真实体验报告
在 AI 编程工具日趋主流的今天,Claude Code 凭借强大的任务执行、工具调用与工程化能力,成为开发者与自动化运维的核心效率工具。但随着原生模型账号稳定性问题频发,寻找一套兼容、稳定、能力在线的替代方案变得尤为重要。DeepSeek V4-Pro 作为新一代高性能大模型,提供了完整兼容 Claude 协议的 API 接口,只需简单配置即可无缝驱动 Claude Code,且在任务执行、工具调用、复杂流程处理上表现极为稳定。
903 0
|
7天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
1779 3
|
17天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
5541 21
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
18天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
6610 16