这一团糟的代码,真的是我写的?!
2019-09-11 11:51
3507 查看
阿里妹导读:你有没有遇到过这种情况:过几周或者几个月之后,再看到自己写的代码,感觉一团糟,不禁怀疑人生?我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来。今天,我们就来说什么是好的代码?
一句话概括
衡量代码质量的唯一有效标准:WTF/min —— Robert C. Martin
图片来源:https://www.osnews.com/story/19266/wtfsm/
任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。 —— Martin Fowler
整洁的代码如同优美的散文。 —— Grady Booch
好代码的特性
高内聚低耦合
开闭原则OCP (The Open-Close Principle) 单一职责原则SRP (Single Responsibility Principle) 依赖倒置原则DIP (Dependence Inversion Principle) 最少知识原则LKP (Least Knowledge Principle)) / 迪米特法则 (Law Of Demeter) 里氏替换原则LSP (Liskov Substitution Principle) 接口隔离原则ISP (Interface Segregation Principle) 组合/聚合复用原则CARP (Composite/Aggregate Reuse Principle)
可读性
★ 命名
/**
* 创建后的天数
**/
int d;
int daysSinceCreation;
★ 格式
public class Demo {
@Resource
private List<Handler> handlerList;
private Map<TypeEnum, Handler> handlerMap = new ConcurrentHashMap<>();
@PostConstruct
private void init() {
if (!CollectionUtils.isEmpty(handlerList)) {
for (Handler handler : handlerList) {
handlerMap.put(handler.getType(), handler);
}
}
}
public Result<Map<String, Object>> query(Long id, TypeEnum typeEnum) {
Handler handler = handlerMap.get(typeEnum);
if (null == handler) {
return Result.returnFailed(ErrorCode.CAN_NOT_HANDLE);
}
return handler.query(id);
}
}
public class Demo {
@Resource
private List<Handler> handlerList;
private Map<TypeEnum, Handler> handlerMap = new ConcurrentHashMap<>();
@PostConstruct
private void init() {
if (!CollectionUtils.isEmpty(handlerList)) {
for (Handler handler : handlerList) {
handlerMap.put(handler.getType(), handler); } } }
public Result<Map<String, Object>> query(Long id, TypeEnum typeEnum) {
Handler handler = handlerMap.get(typeEnum);
if (null == handler) {
return Result.returnFailed(ErrorCode.CAN_NOT_HANDLE);
}
return handler.query(id); }
}
★ 类与函数
★ 注释
★ 错误处理
如何判断不是好的代码?
代码的坏味道
重复可能是软件中一`切邪恶的根源。 —— Robert C.Martin
总结
参考:
你可能还喜欢
点击下方图片即可阅读
阿里研究员:测试稳定性三板斧,我怎么用?
关注「阿里技术」
把握前沿技术脉搏
相关文章推荐
- OpenBSD创始人声称OpenSSL代码一团糟
- 有了jsRender,妈妈再也不用担心我用jq拼接DOM拼接的一团糟了、页面整齐了、其他伙伴读代码也不那么费劲了
- OpenBSD创始人声称OpenSSL代码一团糟
- tensorflow代码实现:Inception模块
- 1.3 kyLin-V3.0-OneNET-进阶代码(二)
- 微信公众号网页授权代码优化过程(四)
- 前端所有表示颜色的代码
- PHP数组无限分级数据的层级化处理代码
- 解决.msi无法安装的问题(代码1632)
- 利用多进程,多线程写一个下载器代码
- 【Web前端Talk】React-loadable 进行代码分割的基本使用
- label自动换行代码和DataGrid中删除最后一页的记录时出错的解决办法以及HTML小TIPS:强制HTML表格断行
- 例子代码:添加项目到收藏夹
- 拈几个自己写的小代码(jsp的日历和jFrame的计算器)
- 如何编出健壮的代码,java编程30条规则(一)
- c++分包代码
- 10个代码搜索引擎
- 让IE8启动IE7兼容模式的代码
- C# 一行代码 搞定漂亮UI 不影响任何原有程序代码
- 解决Eclipse/MyEclipse编写代码时,没有提示的问题