最新要闻
- 北方多地遭遇沙尘暴 PM爆表:气象台再发预警 还没退去
- 环球头条:流浪小狗乞求收养者一起带走玩具熊:画面让养狗人士泪目 为何被遗弃
- 今日关注:iPhone 14首发的车祸检测功能让人崩溃!苹果iOS 16.4将优化升级
- 每日头条!LOL2023狗熊怎么出装(上单狗熊2023出装顺序)
- 精选!等了 11年 《CSGO2》电竞网游终于官宣:画质大升级 免费更新
- 环球快讯:NVIDIA突然复活SLI!但不是你想的那样
- 每日看点!比尔·盖茨谈ChatGPT 赞其1980年以来最革命性技术进步
- 天天即时:爱子飞机上死亡:母亲怒告世界最大航司美国航空
- 谷歌的“GPT”终于憋出来了!但是 也不比百度强多少啊
- 当前热议!抖音救人一命!男子发头孢配酒视频获救:客服教科书式报警
- 头条:交700个税的工资多少_j700
- 天天热点!苹果官方推荐!iNote灵感笔记新版发布:超紧凑模式来了
- 热讯:金士顿无敌了!拿下2022年全渠道SSD市场占有率第一
- 高德、口碑正式合并:阿里旗下本地到店业务将统一整合
- 热推荐:国科微:目前晶圆产能较前两年已趋于缓和
- 世界快看点丨加快步伐!腾讯高管:“生成式AI”或纳入微信和QQ
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球今日报丨读C#代码整洁之道笔记04_重构C#代码识别代码坏味道
1.应用程序级别代码坏味道
1.1.布尔盲点
1.1.1.由于函数使用布尔值而导致的信息缺失
1.1.2.解决方案是将布尔替换为枚举类型
1.2.组合爆炸
1.2.1.不同的代码使用不同的参数组合来执行同一件事情的产物
(资料图)
1.2.2.解决方案使用泛型
1.3.人为复杂性
1.3.1.简单的架构复杂化
1.3.2.解决方案务必保持软件的简单易懂(Keep It Simple,Stupid,KISS)
1.4.数据泥团
1.4.1.相同的字段同时出现在不同的类和参数列表中时
1.4.1.1.说明系统中缺少类定义
1.4.2.识别并泛化缺失的类可以降低系统的复杂度
1.5.粉饰注释
- 1.5.1.注释中用优美的词句掩盖代码的缺点
1.6.重复代码
1.6.1.多次出现的代码
1.6.1.1.bug=技术债务=程序员支出
1.6.2.解决方案将这些代码添加到当前项目的可重用类并放置在类库中
1.6.3.解决方案2:面向方面编程(AOP)是另一种删除样板代码的方法
1.7.意图不明
- 1.7.1.他人无法轻易理解代码的意图
1.8.可变的变量
1.8.1.不同操作之间多次更改的变量
1.8.2.消除变量的可变性,使其值更易于预测
1.8.3.函数编程
1.8.3.1.LINQ
1.9.怪异的解决方案
1.9.1.源代码中解决同样问题的方案多种多样
1.9.1.1.源代码中解决同样问题的方案多种多样
1.9.1.2.没有制定统一标准而造成
1.9.1.3.程序员并没有意识到系统中已经存在解决方案
1.9.2.解决方案:不同的重复的解决方案编写新类,并将最整洁最高效的方式添加到类中
1.9.3.解决方案2:适配器模式来统一不同的系统接口
1.10.霰弹式修改
1.10.1.一种改动需要在多个类中进行修改
1.10.1.1.复杂的代码还会导致程序员认知负担过重
1.10.2.减少耦合可以使类更易于测试
1.10.3.将不属于类的代码移出到恰当的位置可以提高应用程序的可读性、可维护性与可扩展性
1.11.解决方案蔓延
1.11.1.一种职责在不同的方法、类甚至库中均被实现
1.11.2.单一职责转移到同一个类中
1.12.不可控的副作用
1.12.1.在产品中由于无法被质量保证过程发现而引起的问题
1.12.2.唯一的办法就是重构代码使其完全可测,并可以在调试期间查看变量的状态以确保程序的正确性。
2.类级别代码坏味道
2.1.过高的圈复杂度
2.1.1.大量的分支和循环
2.1.2.1~10
2.1.2.1.代码简单没有风险
2.1.3.11~20
2.1.3.1.较复杂,风险相对较低
2.1.4.21~50
2.1.4.1.引起注意,中等风险
2.1.5.超过50
2.1.5.1.风险高,必须重构
2.1.6.解决方案
2.1.6.1.使用工厂模式替换switch语句
2.1.6.2.改善if语句条件检测的可读性
2.1.6.3.LINQ语句替换循环
2.2.发散式变化
2.2.1.对代码进行一处更改,但是发现自己必须更改许多不相关的方法
2.2.2.原因
2.2.2.1.类结构不良造成
2.2.2.2.复制粘贴代码
2.2.2.3.利用基类和子类的关系实现继承
2.3.向下类型转换
- 2.3.1.将基类转换为它的一个子类
2.4.过度的字面量使用
2.4.1.将字面量保存在常量中
2.4.2.将字符串字面量放置在本地化资源文件中
2.5.依恋情结
- 2.5.1.当一个方法花费大量的时间处理类中的代码而非自身的代码
2.6.狎昵(xiá nì)关系
2.6.1.一个类若依赖另一个类的实现细节
2.6.2.类之间不应当相互依赖
2.6.3.类应当是自包含的
2.6.4.类之间应该尽可能少地互相了解彼此的底细
2.7.不恰当的暴露
2.7.1.类暴露了其内部细节
2.7.2.打破了面向对象编程的封装原则
2.8.巨大的类
- 2.8.1.务必令其尽可能小巧、整洁、易于阅读
2.9.冗赘类
2.9.1.一种并不包含什么有效操作的类
2.9.2.和其他包含相似意图的类合并
2.9.3.削减继承层次结构
2.9.3.1.理想的继承层次是1
2.9.4.非常小的类还可以考虑采用内联的处理方法
2.10.中间人类
2.10.1.仅将功能委托给其他对象
2.10.2.舍弃中间人直接和处理相应职责的类进行交互
2.10.3.将其与现有类合并
2.11.孤立的变量和常量类
2.11.1.使用一个独立的类来定义系统不同部分使用的变量和常量
2.11.2.丢失其上下文而无法表达任何实际含义
2.11.3.移动到使用它们的位置
2.12.基本类型偏执
2.12.1.使用常量作为字段名称
2.12.2.不恰当地使用常量保存信息
2.12.3.使用基本类型值而非使用对象
2.13.被拒绝的遗赠
2.13.1.一个类继承自另一个类,却没有使用其所有方法
2.13.2.考虑是否真的需要基类
2.14.夸夸其谈未来性
2.14.1.一个类的功能现在不需要,但是将来可能用到
2.14.2.死代码,应当将其删除
2.15.命令,而非询问
2.15.1.将数据和操作数据的方法绑定在一起
2.15.2.一个对象包含逻辑,并要求其他包含数据的对象提供数据以供其执行操作,则应当将逻辑与数据合并到一个类中
2.16.临时字段
2.16.1.不需要在对象的整个生命周期内存在的成员变量
2.16.2.将临时字段及操作这些字段的方法移动到它们自己的类中
3.方法级别的代码坏味道
3.1.不合群的方法
3.1.1.一个类中和其他方法截然不同的方法
3.1.2.考虑该方法的目的
3.1.2.1.确定哪里才是该方法最合适的落脚点了
3.2.无用的代码
3.2.1.现存的方法无人使用
3.2.2.要识别无用的代码并将其删除
3.2.3.构造器、属性和变量也应遵循相同的原则
3.3.过多的返回数据
- 3.3.1.远超客户端的调用
3.4.过长或过短的标识符
- 3.4.1.标识符应当既能描述对象又简明扼要
3.5.过长的代码行
- 3.5.1.应尽量将其格式化,在点号和逗号处换行
3.6.过长的方法
- 3.6.1.方法应当只负责执行单一任务
3.7.参数过多
- 3.7.1.方法参数数目超过3个
3.8.过度耦合的消息链
3.8.1.当一个方法调用一个对象,继而调用另一个对象
3.8.2.消息链违反了迪米特法则
3.8.2.1.类只应当和离其最近的邻居通信
3.8.2.2.重构类,将所需的状态和行为放在距离其更近的位置
3.9.过高的圈复杂度
3.10.人为复杂性
3.11.依恋情结
3.12.狎昵关系
3.13.冗赘方法
3.14.中间人方法
3.15.怪异的解决方案
3.16.夸夸其谈未来性
3.17.参见前文
关键词:
-
全球今日报丨读C#代码整洁之道笔记04_重构C#代码识别代码坏味道
1 & 160;应用程序级别代码坏味道1 1 & 160;布尔盲点1 1 1 & 160;由于函数使用布尔值而导致的信...
来源: 全球今日报丨读C#代码整洁之道笔记04_重构C#代码识别代码坏味道
北方多地遭遇沙尘暴 PM爆表:气象台再发预警 还没退去
环球头条:流浪小狗乞求收养者一起带走玩具熊:画面让养狗人士泪目 为何被遗弃
今日关注:iPhone 14首发的车祸检测功能让人崩溃!苹果iOS 16.4将优化升级
世界热讯:读Java性能权威指南(第2版)笔记25_性能测试方法上
每日头条!LOL2023狗熊怎么出装(上单狗熊2023出装顺序)
精选!等了 11年 《CSGO2》电竞网游终于官宣:画质大升级 免费更新
天天简讯:使用C#开发微信公众号对接ChatGPT和DALL-E
今日关注:关于人工智能的思考,写在chatGPT爆火之时
Vue——initRender【八】
环球快讯:NVIDIA突然复活SLI!但不是你想的那样
每日看点!比尔·盖茨谈ChatGPT 赞其1980年以来最革命性技术进步
天天即时:爱子飞机上死亡:母亲怒告世界最大航司美国航空
谷歌的“GPT”终于憋出来了!但是 也不比百度强多少啊
当前热议!抖音救人一命!男子发头孢配酒视频获救:客服教科书式报警
头条:交700个税的工资多少_j700
今日讯!SEO优化:友情链接!真心换真心?
通过 poe 免费使用ChatGPT、GPT-4
天天观察:71.C++标准库类型string
CTAS建表时报错ORA-65114
Go HTTP编程
天天热点!苹果官方推荐!iNote灵感笔记新版发布:超紧凑模式来了
热讯:金士顿无敌了!拿下2022年全渠道SSD市场占有率第一
高德、口碑正式合并:阿里旗下本地到店业务将统一整合
热推荐:国科微:目前晶圆产能较前两年已趋于缓和
全球最新:关于基于AWS-Cli的方式对RDS资源批量添加tag的方法
全球微速讯:小红书去水印技巧合集(亲测有效!!!)
每日热点:Git基本使用
RHEL无法配置网关问题一则
世界快看点丨加快步伐!腾讯高管:“生成式AI”或纳入微信和QQ
天津金逸影城
2023年3月22日(软件工程日报)
阿里云大使和代理商的优惠的区别与选择
动态焦点:美债市场危机四伏 “安全资产”吸引力或进一步下降
3GB显存被封杀!《光环无限》都不让玩
Opera浏览器推送97.0.4719.26更新:集成ChatGPT与AI总结功能
世界速递!碧桂园打造湖湘人居典范 护航品质生活
世界新动态:70.C++ using的三种用法详解
环球资讯:农业银行发行700亿元二级资本债进一步增强资本实力
3599元 铭凡NUCG5迷你主机上架:碳纤维机身、下压式散热
世界百事通!比RTX 4080小一半!NVIDIA发布RTX 4000 SFF半高卡:功耗仅70瓦
【世界新要闻】专家:沙尘天气里最好别戴隐形眼镜
焦点播报:成龙和甄子丹"打架"谁会赢?甄子丹:我老了 他更老
性价比更高 有哪些散片CPU值得入手?
每日精选:Swift 备忘清单_开发速查表分享
全球信息:利用“姿态相似度比较”功能,对运动(动作)识别检测“秒”适配
国民第一APP坐实了 微信月活破13亿无可匹敌
天天时讯:堆料最多的小米手机!曝小米13 Ultra最高配1TB UFS 4.0闪存
iPhone 15 Pro工业设计敲定!这外观果粉会打多少分?
1499元!微星发布MD271UL 4K显示器:P3色域可达99%
399元1TB 速度5000MB/s!影驰星曜X4 PRO SSD图赏
世界热推荐:IDC 预计 2023 年全球可穿戴设备出货量预计将出现反弹
微头条丨低代码开发,一场深度的IT效率革命
混合多云第二课——混合技术如何每年为京东节省上亿元成本?
【天天新视野】记录--我在前端干工地(three.js)
数据库系统原理之数据库编程
当前滚动:债市日报:3月22日
女子应聘被HR质疑23岁用苹果手机:称其年纪小 手机贵
天天速讯:四川一高校放7天春假 鼓励大家去恋爱!网友:坚持一个四川原则
环球速递!腾讯2022年人均年薪102.5万!一年增加近20万
世界资讯:“长胡子”了 比亚迪海豚泰国版发布:售价约16万人民币
【全球新视野】被马化腾视为腾讯希望!微信视频号使用时长已超朋友圈
世界看热讯:农历中的惊蛰到底有什么寓意?
天天快讯:Kruise Rollout v0.3.0:教你玩转 Deployment 分批发布和流量灰度
ThreadPool实现机制
焦点热议:nodejs处理嵌套对象的npm包:dot-prop
中国西北地区发现广泛分布的侏罗纪被子植物化石
3年陈花香白牡丹:董德福鼎白茶200g装128元大促(200元券)
环球快看:188GB显存 800W功耗!NVIDIA发布H100 NVL加速卡:ChatGPT提速2倍
世界新资讯:美国两囚犯用牙刷挖洞越狱成功:墙内钢筋松了!职能部门颜面扫地
当前观察:9岁女孩豪掷18.9万打赏游戏主播 偷偷记下密码还删除转账记录
天天速讯:新能源汽车高速没电竟然倒车回服务区充电 后方车辆纷纷避让
Geyser - Minecraft Server 基岩版与Java版互通教程
世界速讯:Rust 知识积累(5)
全球热文:CSIG企业行-走进合合信息成功举行,聚焦生成式人工智能、智能文档处理前沿热点
环球今日讯!webrtc QOS笔记三 RTT计算,SRS增加XR
你可能不那么知道的Tomcat生命周期管理 | 博学谷狂野架构师
全球新资讯:国家药监局:2022年抽检11类化妆品20368批次产品 合格率97.60%
每日速看!【财经分析】投资收益拖累2022年券商业绩 投行业务景气度仍处于高位
【聚看点】澳弘电子(605058.SH):年产高精密度多层板、高密度互连积层板120万平方米建设项目及研发中心升级改造项目结项
真我GT Neo5 SE“最终幻想”配色回归:赛博朋克风满满
当前消息!《黑暗荣耀2》蝉联网飞电视剧全球榜第一:观看时间过亿
当前热门:又一日系即将退出中国?广汽三菱否认传闻:正常运转
世界看点:被谷歌商店下架 拼多多驳斥恶意软件指控!
世界聚焦:上市五年市值缩水99.6%!昔日“明星”趣头条宣布退市
新资讯:火山引擎 VeDI 零售行业解决方案 聚焦精准营销场景提升品牌转化
面试官:ThreadLocal 为什么会内存泄漏吗?是怎么产生的?面试必问!
JavaSE笔记之注解和反射(含案例代码)
当前速递!Android BLE 广播定制
环球报道:关于asp.net core filters生命周期的探究
今头条!北方多地迎沙尘!长春直接下“泥雨”:汽车变泥车
环球速讯:OPPO、小米、vivo联盟:跨品牌一键换机新增第三方应用迁移
最新消息:史上最强骁龙7系 真我GT Neo5 SE跑分过百万:16+1TB存储确认
世界今热点:孤立森林(IForest)代码实现及与PyOD对比
最资讯丨three.js加载环境贴图
天天热讯:java中同步和异步的区别
今日关注:Alphaliner:2月底港口停运船比率达6.4% 增至去年同期3倍
4月上映!《长空之王》新预告出炉:王一博驾驶歼20一飞冲天
世界今头条!自嗨锅自热煲仔饭4桶到手价32.8元:15分钟速烹美食
今年以来最强沙尘来袭!你的城市在下雨 他的城市在下泥