《设计模式之美》第四章 总结

embedded/2024/11/12 5:57:01/

设计模式之美》第四章 总结

第四章 代码规范

4.1 命名与注释:如何精准命名和编写注释

4.1.1 长命名和短命名哪个更好
谨慎使用缩写
作用域比较小的变量,比如临时变量,可以说使用短命名
作用域比较大的变量,比如全局变量,推荐使用长命名
4.1.2 利用上下文信息简化命名
4.1.3 利用业务词汇表统一命名
4.1.4 命名既要精准又要抽象
命名不要太过宽泛表意不精准,也不能过于具体,透露太多实现细节;
只需要表明做什么,而不需要表面怎么做;
要兼顾抽象特性,在修改具体实现时,可以不用修改它的命名;
4.1.5 注释应该包含哪些内容
应该包含:做什么、为什么、怎么做
作用:	
1. 注释可以承载比命名更多的信息
2. 注释有说明和示范作用
3. 总结性注释可以使代码逻辑更加清晰
4.1.6 注释并非越多越好
注释太多,会导致很高的维护成本,修改了代码忘记改注释,会导致代码和注释不一致
类、函数、成员变量,需要写详尽的注释
内部代码:局部变量、函数内部每条语句,尽量少写注释
通过好的命名、函数拆分、解释性变量来替代注释;

4.2 代码风格:与其争论标准,不如团队统一

4.2.1 类、函数多大才合适
什么时候该拆分:当感到阅读一个类的代码困难、实现某个功能时不知道应该使用类中的哪个函数、需要很长时间寻找函数和使用一个小功能却要引入一个庞大的类(类中包含很多与此功能实现无关的函数),说明类的代码行数过多了
4.2.2 一行代码多长才合适
最好不要超过IDEA显示的宽度
4.2.3 善用空行分隔代码块
在成员变量和函数之间
静态成员变量和普通成员变量之间
各个函数之间、各成员变量之间
4.2.4 是四格缩进还是两格缩进
4.2.5 左大括号是否要另起一行
团队或项目中保持统一
4.2.6 类中成员的排列顺序
成员变量在函数前面
成员变量和函数之间:先静态、后非静态
成员变量和函数之间还会按照作用域范围从大到小顺序排列:先publie,后protected, 最后private

4.3 编程技巧:小技巧,大作用,一招提高代码的可读性

4.3.1 将复杂的代码模块化
要有模块化思维:善于将大块的复杂代码封装成类或函数,提高代码的可读性
4.3.2 避免函数的参数过多
一般超过5个算多
解决方法:将参数封装为对象的方式,可以减少参数个数、提高函数兼容性(加参数不需要改变函数定义,只需要修改参数对象)
4.3.3 移除函数中的flag参数
可以拆分成两个或多个函数,拆分后函数的职责明确;
4.3.4 移除嵌套过深的代码
嵌套最好不要超过两层
处理方法:
1. 去掉冗余的if-else语句;
2. 使用continue、break和return关键字提前退出嵌套;
3. 通过调整执行顺序减少嵌套层数;
4. 将部分嵌套代码封装成函数,减少嵌套层数;
4.3.5 学会使用注释性变量
1. 使用常量取代魔法数字
2. 使用解释性变量来解释复杂表达式;

http://www.ppmy.cn/embedded/11689.html

相关文章

排序算法:顺序查找

简介 顺序查找(也称为线性查找)是一种简单直观的搜索算法。按照顺序逐个比较列表或数组中的元素,直到找到目标元素或搜索完整个列表。 应用场景 数据集比较小,无需使用复杂的算法。数据集没有排序,不能使用二分查找…

春季打卡圣地|超出片的成都文创产业园

春季拍照还在去人民公园、青龙湖吗?这个春天来点不一样的,就在金牛区的成都文创产业园——国际数字影像产业园旁,沙河源公园占地面积约150亩,地下室面积约4000平方米,这里的花能让摄影爱好者们拍个够。 国际数字影像产…

HarmonyOS ArkUI实战开发-手势密码(PatternLock)

ArkUI开发框架提供了图案密码锁 PatternLock 组件,它以宫格图案的方式输入密码,用于密码验证,本节读者简单介绍一下该控件的使用。 PatternLock定义介绍 interface PatternLockInterface {(controller?: PatternLockController): PatternL…

新能源电站智能监控管理系统概述

一、系统概述: 针对光伏、风电、储能及充电桩等新能源电站,新能源电站智能监控管理系统提供一站式解决方案。通过实时监测电站运行状态,集成运行监控、智能预警、实时告警、发电分析、视频监控及运维管理等功能,确保电站在全生命…

Spring Boot统一功能处理

1. 统一数据返回格式 统一数据返回格式,就是对返回的数据做一个统一的处理: ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {AutowiredObjectMapper mapper;//判断是否要执行beforeBodyWrite方法Overridepublic boolea…

用现成的容器来创建一个镜像,或者说再克隆一个一模一样的容器

前言:我在centos系统中使用docker拉取了一个centos镜像,并用这个镜像创建了一个hadoop容器,但是后面我又需要一个相同版本的hadoop镜像来创建其他容器(比如hive容器),但是这个时候docker官网并没有对应版本…

Rust 认识所有权

目录 什么是所有权? 栈(Stack)与堆(Heap)所有权规则变量作用域String 类型内存与分配 变量与数据交互的方式(一):移动变量与数据交互的方式(二):克隆只在栈上的数据:拷贝所有权与函数返回值与作用域引用与借用 可变引用悬垂引用(Dangling References)引用的规则S…

蓝桥杯2024年第十五届省赛真题-爬山

贪心优先队列的题&#xff0c;贪心会漏一个情况&#xff0c;不知道怎么处理&#xff0c;这里直接打表了 2 1 1 48 49 答案是30&#xff0c;贪心是31 专有名词&#xff1a;hack-有新的测试点过不了 #include<bits/stdc.h> using namespace std; #define endl \n #define …