如何避免在C#中出现混乱代码|今日快讯
2023-06-21 17:22:05 来源:清一色财经

混乱代码错综复杂,就像一盘纠缠在一起的面条。如果你要清理它,最好从小处开始并不断改进代码。通过遵循本文中概述的10个指导方针,你可以避免应用程序中出现混乱代码,并为团队成员节省大量时间、精力和避免麻烦。

作者 |Joydip Kanjilal


【资料图】

编译 | 王瑞平

意大利面是一种很好吃的食物,但是,如果用它来形容代码意味着这种程序很糟糕。

“意大利面条式代码”是一个术语,用于描述组织不良、纠缠不清或嵌套复杂的代码。这些代码非常难以理解、更新、扩展和维护,缺乏适当组织,具有复杂或令人费解的控制流。这违反了软件设计原则。

无论你的代码如何天衣无缝,混乱代码都将或多或少地潜入你应用程序的源代码中。最终,你的代码将变得难以阅读、难以处理,从而难以添加新的功能、无法修复错误和维护代码库。

一、溯源:混乱代码出现的原因

那么,你的C#程序中为什么会出现混乱代码呢?这通常由以下原因导致:

1.未能遵循正确的方法和原则编写代码

2.编写代码时没有组织代码的计划

3.使用借来的代码

4.使用没有经验的开发人员编写的代码

从项目迭代到后期,往往会变得很混乱,只有少数人能知道某段代码的作用和该如何去改,或者是干脆谁都不知道,只能靠通过注释去猜测这段代码可能的作用。

因为团队内部人员变动导致撰写代码的人不再管理这段代码了。我们称这类代码为“祖传代码”,没人懂也没人敢动。祖传代码一多,开发人员再想迭代就难上加难,形成可怕的恶性循环。

二、陷阱:混乱代码会使你焦头烂额

混乱和无组织代码会给C#程序员带来麻烦,现在列举出来,看看你是否曾经遇到过这些情况:

·首先,它会为开发人员带来难以修复的bug或导致无法向程序中添加新的功能,还会导致试图更改C#代码的团队成员困惑不解。

·其次,由于算法效率低下或缺乏优化,混乱代码可能会导致应用程序性能降低、响应时间变慢、内存消耗增加,影响用户体验。

·最后就是安全问题,混乱代码中可能暗藏被黑客利用的漏洞。

如果你的程序中出现了混乱代码,需要付出昂贵的成本修复。幸运的是,这些情况都是可以避免的。在文章的下半部分,我们将提供10个最佳方法,用来避免C#语言中出现混乱代码并保持程序整洁、组织良好和可维护。

三、10招:避免出现混乱代码

你需要遵循以下10种方法确保你的C#语言中代码干净、精简和易于维护。

方法一:坚持面向对象原则

您应该在C#语言的类和对象中封装数据和行为,并遵循“面向对象编程(OOP)”原则,如,继承、组合和多态性来创建模块化、可管理和有组织的代码。

方法二:坚持采用SOLID和DRY原则编程

首先来介绍下什么是SOLID和DRY原则:

SOLID原则:

(1)SRP(Single Responsibility Principle)单一职责

一个类或模块只负责完成一个功能。

(2)OCP(Open Closed Principle)开闭原则

(模块、类、方法)对拓展开放,对修改关闭

(3)LSP(Liskov Substitution Principle)里氏替换

子类对象能够替换程序中父类对象出现的任何地方,并保证原来程序的逻辑行为不变及正确性不被破坏。

(4)ISO(Interface Segregation Principle)接口隔离

客户端(接口调用者)不应该被强迫依赖它不需要的接口。

(5)DIP(Dependency Inversion Principle)依赖倒置/依赖反转

高层模块不依赖低层模块,它们共同依赖同一个抽象,抽象不要依赖具体实现细节,具体实现细节依赖抽象。

DRY(Don’t Repeat Yourself)原则:

不要开发重复代码,可以复用或提取公共代码,同时,也要注意遵守“单一职责”和“接口隔离”原则。

总之,构建遵循“SOLID和DRY”原则的软件可以将出现混乱代码的相关风险降至最低。

·这里特殊说明下,根据“单一职责原则”(五个SOLID原则之一),每类程序或方法只需要具备一个职责。例如,应用程序中的Logger类代码只需要负责记录数据,而不应该包含其它功能。

·当具有复杂功能的程序被分解成更小、更集中的组件时,就更容易理解和维护它们。“DRY原则”可以将公共函数抽象为可重复使用的方法、类和库,从而减少出现重复的代码。

方法三:保持清晰和集中的步骤

将复杂的任务分解为可管理的步骤,可以使你的代码更易于阅读和理解。这也减少了代码的冗余并提高了代码的可维护性。

方法四:使用有意义的名称

通过遵守编码标准和风格指南有利于让你的代码库保持整齐,确保变量、类、方法和其它元素都能匹配上有意义的描述性名称。这些名称使你的代码更容易理解,从而减少注释并使维护代码变得更容易。

方法五:降低圈复杂度

“圈复杂度”用来确定源代码中线性独立路径数量,可以帮助你理解代码复杂性。过多的if-else语句和深度嵌套使代码难以理解并增加了圈复杂度。你可以通过重构代码减少嵌套级别并简化分支逻辑。

方法六:代码中少用注释

6代码中应该包含注释,用来解释类、接口、方法和属性出现的目的,使代码更容易管理、维护和调试。但是,文档需要更加清晰。清晰的名称和更简单的代码(即,圈复杂度更低的代码)使代码更容易理解,并不一定需要出现太多的注释。

方法七:定期重构代码

删除代码冗余或重复,简化复杂的代码片段,并通过定期重构提高代码质量。通过改进代码的设计和结构,重构使代码库随着时间的推移更容易维护。

方法八:KISS和YAGNI原则简化代码

KISS原则是英语Keep It Simple的缩写,也有人称“懒人原则”,是指在设计当中应当注重简约。

你可以将KISS原则应用于编程,用来构建最简单的框架,满足用户需求并避免不必要的复杂性。当你的应用程序中包含不必要的特性和代码时,它不仅会使单元测试和代码维护变得困难,而且还会影响用户体验。

YAGNI原则的英文全称是:You Ain’t Gonna Need It。直译就是:你不会需要它。当用在软件开发中的时候,它的意思是:不要去设计当前用不到的功能,不要去编写当前用不到的代码。

类似的,你可以遵循YAGNI原则清除不重要的功能和代码。你应该只关注需要的功能,避免为追求完美而给代码“镀金”。

方法九:经常运行单元测试

你应该在软件开发工作流程中充分利用单元测试工具,减少应用程序中的错误。单元测试有助于确保代码单元按照预期运行。如果你已经更改或重构了代码,应该再次运行单元测试功能,用来确保一切工作正常进行。

方法十:进行代码审查

进行代码审查可以让你深入了解代码并获得反馈。同行评审代码使你和团队成员有机会识别混乱代码并收集改进建议。同行评审可以帮助你的团队避免编写混乱代码并付诸实践。

四、写在最后:不与混乱代码纠缠

总之,混乱代码错综复杂,就像一盘纠缠在一起的面条。如果你要清理它,最好从小处开始并不断改进代码。通过遵循本文中概述的10个指导方针,你可以避免应用程序中出现混乱代码,并为团队成员节省大量时间、精力和避免麻烦。

参考资料:

https://www.infoworld.com/article/3699709/how-to-avoid-spaghetti-code-in-c-sharp.html

https://blog.51cto.com/wenwang3000/6037099

如何避免在C#中出现混乱代码|今日快讯

2023-06-21

毒·戒丨武汉市司法行政戒毒系统2023年禁毒宣传月活动启动 全球焦点

2023-06-21

Sandro羽绒服不合格被罚23万

2023-06-21

黑色持仓日报:期螺跌1.58%,20家期货公司合计减持超8万手-每日热讯

2023-06-21

韵达快递怎么样才可以转到人工台客服_韵达快递怎么样 天天热消息

2023-06-21

微速讯:端午假期阜阳加开夜间高铁

2023-06-21

薪享用,米多多,周转客栈,好立信强制下款|世界热议

2023-06-21

世界今日讯!创新驱动,山东全力推动战略性新兴产业加速崛起

2023-06-21

宋国庆

2023-06-21

美汁源果粒橙多少一瓶(美汁源果粒橙价格)-全球消息

2023-06-21

什么是第一次世界大战的导火线?_第一次世界大战的导火线是什么事件

2023-06-21

壬二酸可以祛黄褐斑吗_百消丹能祛黄褐斑|天天观点

2023-06-21

信息:折纸花大全图解简单又漂亮_折纸花大全图解

2023-06-21

河北吴桥:激发公办养老机构新活力

2023-06-21

周常任务是什么意思_周常任务

2023-06-21

世界快报:外交部美大司司长介绍中美双方达成的五项共识

2023-06-21

公司缴纳社保费计入哪个科目(公司缴纳社保费计入哪个科目里面)_环球观焦点

2023-06-21

银行逾期2年账单停息挂账怎么办?停息挂账后二次逾期怎么办? 新视野

2023-06-21

世界简讯:恒星科技:6月20日融券卖出4.24万股,融资融券余额3.08亿元

2023-06-21

智利磷虾冰雕亮相 呼吁关注气候对南极洲影响_全球最资讯

2023-06-21

哈登续约谈判被莫雷忽悠 后悔放弃2.5亿没比尔明智 76人故技重施

2023-06-21

当前看点!徐鸣一审获刑15年

2023-06-21

全球看点:蹲起的正确姿势锻炼哪里_蹲起的正确姿势

2023-06-21

每日播报!最高人民检察院依法以涉嫌受贿罪对范一飞决定逮捕

2023-06-20

每日速读!30分钟一趟票价40元,济南至德州城际公交正式开通

2023-06-20

华为回应向日企收专利费!任正非签发的一份会议纪要 透露真正用意

2023-06-20

全球热资讯!2023年国内固态硬盘行业发展趋势预测

2023-06-20

以色列计划修建新定居点 联合国秘书长敦促停止 焦点消息

2023-06-20

全球最新:桑葚泡白酒(你了解多少)

2023-06-20

中酒协中期研报:上半年白酒市场遇冷 近5成酒商称库存压力在增长

2023-06-20

欧元兑换人民币汇率(2023年6月20日)

2023-06-20

女幼师给幼儿喂避孕药?当地警方最新通报!

2023-06-20

临川连城:乡村劲吹“文化风”

2023-06-20

江西:新“夜”态激发消费新潜能-每日讯息

2023-06-20

【环球报资讯】最新!房贷再降息

2023-06-20

当前时讯:华住与法国雅高合作的两家杭州酒店开业

2023-06-20

ETC是什么 怎么办理

2023-06-20

流水作业法 快播报

2023-06-20

环球新资讯:新雷能6月20日盘中涨幅达5%

2023-06-20

洪山:筑牢优化营商环境“铁三角”

2023-06-20

全球热文:牙齿上的牙垢如何去除_牙齿上的牙垢怎么清除

2023-06-20

环球时讯:温州七中初中部上课时间_温州七中

2023-06-20

全球今日讯!中国武夷06月19日被深股通减持179.94万股

2023-06-20

微速讯:红塔证券(601236):6月19日北向资金减持4.33万股

2023-06-20

今亮点!物流一直显示等待揽收(淘宝物流一直显示揽收)

2023-06-20

三生制药(01530.HK):6月19日南向资金增持36.7万股

2023-06-20

莜面饼的做法_莜幂|热文

2023-06-20

焦点速递!范德文恩_关于范德文恩的简介

2023-06-19

一位退休人员眼中的房地产市场

2023-06-19

“千万工程”调研行|这里的农民生活为何如此惬意?——浙江嘉兴乡村走访见闻-视讯

2023-06-19

三只松鼠最新公告:实控人拟2000万元-3500万元增持股份_当前速看

2023-06-19

人死后灵魂去了哪里_人死后的灵魂图片 世界看点

2023-06-19

当前关注:教育局深夜通报:基本属实!

2023-06-19

华为p60手机参数配置

2023-06-19

世界通讯!英大长安保险经纪公司总经理李英任职资格批复

2023-06-19

今日热门!山东大学齐鲁医院举行消化内镜中心搬迁启用仪式

2023-06-19

温州怡合医院是几级?

2023-06-19

国泰航空7月启动在内地招聘机舱服务员_天天快报

2023-06-19

【世界聚看点】必康退(002411)龙虎榜数据(06-19)

2023-06-19

关注:投资领域聊天机器人BondGPT上线 基于GPT-4打造

2023-06-19

栖霞山怀古-环球观焦点

2023-06-19

港股人民币柜台首日:腾讯首小时交易27宗 机构紧盯这路资金 焦点精选

2023-06-19

焦点热议:广州萤火虫漫展2023年7月15日在哪里举行?

2023-06-19

三水乙酸钠商品报价动态(2023-06-19)

2023-06-19

“扶摇采青”致敬传统文化 星瑞1.5TD车型加新上市 10.87万元起售

2023-06-19

今日最新!特斯拉Model S/X折扣来到8000美元 这是要季末冲销?

2023-06-19

索尼A6700相机将配备创新套头 预计7月12日发布|实时

2023-06-19

乌鲁木齐米东区新续建道路工程有序施工 7月起陆续建成

2023-06-19

brandish全集在线观看_brandish_观焦点

2023-06-19

羽毛球印尼公开赛:陈雨菲女单夺冠|世界热讯

2023-06-19

全球通讯!更好发挥货币政策效能(记者手记)

2023-06-19

word怎么加千位分隔符(word中数字千位分隔符) 环球实时

2023-06-19

“包头交通·包你满意”助推交通运输事业 高质量发展|全球视点

2023-06-19

热点聚焦:白酒价格大面积倒挂,渠道现“堰塞湖”

2023-06-19

天天热点!中银一路通过渡账户(中银e路通业务过渡账户)

2023-06-19

手机图片怎么合并在一起 手机图片怎么合并在一起发送|播资讯

2023-06-19

老师站楼道给学生讲课视频_老师站楼道给学生讲课_每日热闻

2023-06-19

美妆、穿搭如何打造“松弛感”?

2023-06-19

第十四届中国摄影金像奖颁奖典礼在三门峡举行|天天时讯

2023-06-19

世界速讯:南京城区人口693万,被中央确认为特大城市,苏州有差距,需努力

2023-06-18

cdr表格制作_cdr表格

2023-06-18

吸引世界各地1700余名车手参与 首届环西自行车中国挑战赛在昌平落幕

2023-06-18

收款委托书范文 环球通讯

2023-06-18

全球微资讯!柏木琴美_关于柏木琴美概略

2023-06-18

体系球员?皇马不要 阿森纳赛季最佳厄德高代表挪威20场0球0助

2023-06-18

孟凤朝 铁三局_孟凤朝-每日资讯

2023-06-18

“归•家”光明科学城2023年智能制造高峰论坛在深圳开幕-每日焦点

2023-06-18

怎样解除pdf加密(pdf文件如何解除加密)

2023-06-18

大兴区第四届武术文化节在北臧村镇开幕

2023-06-18

世界通讯!win7系统玩地平线3_地平线3 win7就不能玩吗

2023-06-18

“祁连雪牡丹”入驻森林动物城,济南跑马岭喜添5只“獴”宝|每日快讯

2023-06-18

学校简笔画图片大全最简单的_学校简笔画图片

2023-06-18

播报:公募基金参与上市公司定增的热情持续升温,今年累计认购超450亿

2023-06-18

德邦证券给予应流股份买入评级 管理层增持公司股份 长期看好公司发展

2023-06-18

年仅37岁知名歌手因黑色素瘤去世!身上这些黑痣要留意… 环球百事通

2023-06-18

天天通讯!中考最后一天预计有雨还将遭遇周一早高峰,徐汇交警建议考生预留出行时间避免迟到

2023-06-18

世界热门:北通ICE手机散热器评测:夏天手游爱好者的福音

2023-06-18

报小拍|雨中鏖战 “社超”点燃激情_微资讯

2023-06-18

【甘快看】甘肃省40多家企业组团参加第九届上交会

2023-06-18

博格巴:过去几个月让我成长了10岁 在曼联没感受到真正的爱 全球速看

2023-06-18