架构篇--代码质量手册
目前团队缺少SA(研发经理)的角色,大家代码写的有点随意,老板让我写一份开发手册。嗯!!!当时我稍微纠结了一下,感觉这个似乎不是我的工作范畴,但是本着"我就是块砖,哪里需要往哪搬"的工作态度,还是应下了这个工作。
遥想当年,大学时我去应聘了学校学生处的秘书,很幸运在学生处历练了2年,当时还是学到了一些写作的本事。感谢当时的老师,还有学姐!!!特别是学姐,那是手把手教我~嗨!都是往事,都是故事!
各位道友,下面是我写的研发手册,虽然不是文采飞扬,但是本着实事求是的态度,还是描述清楚了手册的重要性。
正文如下:
为什么要有代码质量手册
一些事实
只有当出现“严重”的性能问题时,我们才会开始着手进行性能优化。在优化过程中,面对无数细小的“不良”代码,往往又力不从心。相比得到的些许性能改善,庞大的工作量又不得不令人放弃。不得不承认的是,无数细小的“不良”代码所累加的性能问题是严重的。这些看似“细小“的问题总是得不到重视。
一个软件的生命周期中,80%的花费用于维护。几乎没有一个软件,在其整个生命周期中,均由最初的作者来维护,工程级代码需要所有工程师去维护。
代码首先是用来实现和完成功能需求的,但更多时候是写给身边的队友和自己看的,是需要长期维护的。
写好代码不容易,写烂代码很容易。代码清晰,比奇技淫巧重要。模式、规范只是手段,代码清晰才是目的。在烂代码的熏陶下很难理解什么是好代码。
大多数时候,文档和代码是不同步的,而且文档往往是滞后的。这就更要求有清晰的代码了。而优秀的代码大部分是可以自描述的,好于文档和注释。
工程级代码要求:功能实现(执行力) > 代码可读性(责任心) > 运行性能(对极致的追求)。
规范制定的目的
我们需要这个规范吗?
推荐大家仔细阅读Google Java Style Guide和《重构-改善既有代码的设计》。另外,阿里开源了阿里巴巴Java开发手册,有不少实战干货,很多思想是通用的。
规范的制定是长期以来对工作的积累与沉淀的产物,帮助我们更快、更好、更高效的完成工作,制作规范的主要目的在于:
- 无论团队人数多少,代码风格都应该师出同门。细节体现一个coder和团队的专业程度。
- 避免低级的错误发生。
- 规范是多人良好协作的前提,它能降低每个成员介入项目的门槛,提高工作效率。
- 统一的代码风格,可以培养团队良好的协作和编码习惯,可以减少无谓的思考,团队内部阅读或调整代码,将会变得非常轻松。
- 规范化的最终目的,一个是提高开发效率,另一个是确保团队开发的可持续性,减少“坑”出现的几率。
面对规范的态度
规范,意味着约束。可能会带来一定程度的束缚甚至反感。意味着不能由着自己的性子做事了。 但是,在一个团队里面做事,更多的是要确保把事情做成、做好。
为保证规范不会引起开发者强烈的反感与束缚,规范里面,并没有很多强制性的字眼,更多的是一种理念、建议。
好的编码规范能帮助团队提升效率。为了不让它成为效率的绊脚石,大家都可以参与到这份规范中来,好的建议,都可以加进来。或者有意见可以一起讨论。
坚持制定好的代码规范。实际上也会潜移默化的给个人带来正面的影响,时间越长,正面的影响就越大。即使有一天,因为某些原因,没有遵循相关规范,从而打破了规则。也能做到心中有数----你知道什么时候可以打破这些规则。
约定
- 开发环境
- 编码约定
- 开发工具
- 标准工程结构
- 代码规范
- 命名规范
资料
- 模块介绍
- 数据表结构
- 常用工具类
- 问题总结
各位道友,上述就是手册的概要,各个模块的详情没有放入链接,多少还是涉及到写公司内容的。请各位道友多多指教~
人道渺渺,仙道茫茫~
相关文章:
架构篇--代码质量手册
目前团队缺少SA(研发经理)的角色,大家代码写的有点随意,老板让我写一份开发手册。嗯!!!当时我稍微纠结了一下,感觉这个似乎不是我的工作范畴,但是本着"我就是块砖&a…...
那些年用过的IDEA插件
今天和大家分享一下经常使用的IDEA的插件,希望有所帮助。一、IDEA插件CodeGlance2显示代码缩略图插件,方便查看代码。Lombok用于编译期间自动生成getter、setter、构造、toString等方法,简化代码。Mybatis Builder或MybatisXMapper接口和xml双…...
python+requests实现接口自动化测试
这两天一直在找直接用python做接口自动化的方法,在网上也搜了一些博客参考,今天自己动手试了一下。 一、整体结构 上图是项目的目录结构,下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类,比如数据库sqlhe…...
rtthread 线程
创建动态线程最简单代码 #include <rtthread.h>//包含头文件static rt_thread_t thread1 RT_NULL; //创建线程控制块指针,指向空static void thread1_entry(void *parameter)//线程入口(干什么) {rt_kprintf("do something"…...
伯恩光学再成被执行人:多次因劳动纠纷被起诉,曾冲刺港交所上市
近日,贝多财经从天眼查APP了解到,伯恩光学(深圳)有限公司(下称“伯恩光学”)因《伯恩光学(深圳)有限公司与温*燕劳动合同纠纷的案件》一事,被广东省深圳市龙岗区人民法院…...
mysql基础操作2
通配符_:一个任意字符,like ‘张_’%:任意长度的字符串,like ‘co%’,‘%co’,‘%co%’【】:括号中所指定范围内的一个字符,like ‘9W0【1-2】’【^】:不在括号中所指定范…...
指针的进阶【下篇】
文章目录📀8.指向函数指针数组的指针📀9.回调函数📀8.指向函数指针数组的指针 🌰请看代码与注释👇 int Add(int x, int y) {return x y; } int Sub(int x, int y) {return x - y; } int main() {int (*pf)(int, int…...
不同序列模型的输入和输出总结
不同序列模型的输入和输出总结 文章目录不同序列模型的输入和输出总结RNNLSTMGRURNN RNN 是迭代输出: 输入第一个 -> 输出第二个, 输入第二个 -> 输出第三个, 输出倒数第二个 -> 输出最后一个。 LSTM LSTM 也是迭代输出ÿ…...
基于神经网络补偿的主动悬架自适应控制
目录 前言 1. 1/4悬架模型 2.仿真分析 2.1仿真模型 2.2仿真结果 2.1 形① 2.2 形② 3. 总结 前言 上两篇博客我们介绍了神经网络补偿控制律的仿真测试,从仿真结果我们可以得知神经网络具有逼近扰动,并将其补偿的作用。 上两篇文章链接…...
什么是链表,如何实现?(单链表篇)
欢迎来到 Claffic 的博客 💞💞💞 “仅仅活着是不够的,还需要有阳光,自由和花的芬芳。” 前言: 在日常使用的网站和软件中,列表属于最常见的一种东西了,其实现形式有顺序表࿰…...
探针台简介
探针台,是我们半导体实验室电学性能测试的常用设备,也是各大实验室以及芯片设计、封装测试的熟客。设备具备各项优势,高性能低成本,用途广,操作方便,在不同测试环境下,测试结果稳定,…...
ABAP 辨析 标准表|排序表|哈希表
1、文档介绍 本文档将介绍内表的区别和用法,涉及标准表、排序表、哈希表 2、用法与区别 2.1、内表种类 内表顶层为任意表,任意表分为索引表和哈希表,索引表又可分为标准表和排序表,结构如图: 2.2、内表用法 2.2.1…...
MIGO 物料过账 创建物料凭证 BAPI_GOODSMVT_CREATE
文章目录1.前台操作2.需求分析2.1调用方式2.2分为两大概括:2.3业务逻辑细节图3.BAPI_GOODSMVT_CREATE4.RFC接口代码5.总结1.前台操作 SAP CO01(创建生产订单)/MIGO(发货投料)前台操作 这里面有migo的前台操作,首先了解前台操作后再去写RFC接口是比较容易理解的.!! 2.需求分析…...
项目经理处理团队冲突 5大注意事项
1、在时间、场景、体验矩阵中的5种处理方式 第一种方式:强迫命令,即职位高的一方在不考虑对方感受的情况下,强迫职位低的一方接受自己的意见。这种处理方式的适用场景为重要且紧急,这种方式团队成员的体验感低。 第二种方式&#…...
Linux(Centos)安装TDengine
目录1:简介2:前期准备3:安装4:启动5:开机自启动6:安装客户端驱动(如果别的服务器需要链接TD则需要此步操作)7:基础命令1:简介 官网: https://www.taosdata.com/简介&…...
大数据处理技术导论(6) | Datawhale组队学习46期
文章目录1. hive 概述2. hive 与传统关系型数据库的对比3. hive 数据类型4. hive 数据模型5. hive 实战5.1 创建表5.2 修改表5.3 清空表、删除表5.4 其他命令项目地址 https://github.com/datawhalechina/juicy-bigdata,感谢项目团队的付出。本次主要学习 hive 相关…...
Java——异常
目录 什么是异常 异常处理主要的5个关键字 异常的体系结构 异常语法 异常的分类 异常的处理流程 异常的处理 防御式编程 异常的抛出 throw的注意事项 异常的捕获 异常声明throws try-catch捕获处理 finally 自定义异常类 throw和throws区别 什么是异常 程序在运行时出现错…...
Netty之io.netty.util.concurrent.Promise与io.netty.util.concurrent.Future初解
目录 目标 Netty版本 Netty官方API 三者之间的关系 基本使用方法 java.util.concurrent.Future io.netty.util.concurrent.Future io.netty.util.concurrent.Promise 目标 了解io.netty.util.concurrent.Promise与io.netty.util.concurrent.Future的基本使用方法。了解…...
【正点原子FPGA连载】第二十一章AXI DMA环路测试 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十一章AXI D…...
手把手搭建springboot项目06-springboot整合RabbitMQ及其原理和应用场景
目录前言工作流程-灵魂画手名词解释交换机类型一、安装1.1 [RabbitMQ官网安装](https://www.rabbitmq.com/download.html)1.2 Docker安装并启动二、食用教程2.1.导入依赖2.2 添加配置2.3 代码实现2.3.1 直连(Direct)类型2.3.2 引入消息手动确认机制2.3.2…...
告别代码异味!在PyCharm 2024.1中配置pylint的保姆级教程(含常见错误排查)
告别代码异味!在PyCharm 2024.1中配置pylint的保姆级教程(含常见错误排查) 当你接手一个遗留项目,看到满屏风格混乱的Python代码时,是否感到无从下手?或者团队协作时,因为成员编码习惯差异导致合…...
终极指南:如何使用Pencil Project实现实时协作原型设计
终极指南:如何使用Pencil Project实现实时协作原型设计 【免费下载链接】pencil The Pencil Projects unique mission is to build a free and opensource tool for making diagrams and GUI prototyping that everyone can use. 项目地址: https://gitcode.com/…...
PCIe Gen4眼图测试实战:如何用示波器快速定位信号完整性问题(附避坑指南)
PCIe Gen4眼图测试实战:示波器操作与信号完整性诊断全解析 当PCIe Gen4的信号速率突破16GT/s大关时,硬件工程师的工作台上总少不了一台高性能示波器。记得去年参与某企业级SSD项目时,我们团队连续三周被一个诡异的眼图闭合问题困扰——每次系…...
复现瓦斯抽采钻孔间距优化的二维数值模拟研究模型
复现论文《瓦斯抽采钻孔间距优化三维数值模拟量化研究》模型 模型为二维 不是论文的三维图 钻孔间距优化的数学建模手记 最近在复现某篇瓦斯抽采钻孔优化的论文时,发现原论文的三维模型对计算资源要求太高。为了快速验证核心结论,我决定将模型简化到二维…...
别再只盯着蓝牙和ZigBee了!用Telink TLSR8258芯片的2.4G私有协议,自己动手做个低功耗遥控器
从零构建2.4G私有协议遥控器:Telink TLSR8258实战指南 当市面上大多数IoT设备还在蓝牙和ZigBee的框架下挣扎时,Telink TLSR8258芯片的2.4G私有协议正在悄然改写低功耗无线通信的规则。我曾在一个智能农业项目中,需要控制200米外的灌溉阀门&am…...
探索燃料电池PEMFC非等温两相流模型:流道液态水膜态水的奥秘
燃料电池PEMFC非等温两相流模型,考虑流道液态水膜态水。在燃料电池的世界里,PEMFC(质子交换膜燃料电池)因其高效、清洁等诸多优点,成为了科研与工业应用领域的热门话题。今天咱就来深挖一下PEMFC中的非等温两相流模型&…...
“COMSOL仿真实现平板电极流注放电:结合等离子体空气反应框架与速率系数求解”
comsol仿真,流注放电仿真,平板电极流注放电。 已复现文献。 包含等离子体空气反应框架。 速率系数求解。 采用等离子体模块。 。流注放电仿真是一种研究等离子体生成和传播机制的重要工具。通过COMSOL仿真,我们可以直观地观察等离子体在不同介…...
低成本替代方案:OpenClaw+Qwen3-32B镜像实现ChatGPT插件功能
低成本替代方案:OpenClawQwen3-32B镜像实现ChatGPT插件功能 1. 为什么需要本地化插件替代方案 去年我在团队内部推广ChatGPT时,发现一个尴尬现象:每当演示网页摘要或代码解释功能时,总会有人问"这些数据会不会传到OpenAI服…...
开源情报员:OpenClaw+nanobot镜像竞品动态追踪器
开源情报员:OpenClawnanobot镜像竞品动态追踪器 1. 为什么需要自动化竞品追踪 作为一名独立开发者,我每天需要花费大量时间手动检查竞品的GitHub仓库更新。这种重复性工作不仅效率低下,还容易遗漏关键信息。直到我发现OpenClaw与nanobot镜像…...
避坑指南:Python 3.9与Transformers 3.0不兼容?手把手解决BERT环境搭建中的版本冲突
深度解析Python与Transformers版本冲突:从报错到BERT环境完美搭建 当你在深夜调试代码时,突然遭遇"module signal has no attribute SIGKILL"的红色报错——这可能是Python 3.9与Transformers 3.0不兼容的典型症状。本文将带你深入理解版本冲突…...
