跟我学C++中级篇——C++开发的一些实践原则

一、实践原则

在前面的文章“架构设计杂谈”中,对常用的设计原则如“开闭原则、单一职责原则”等进行了抽象层次的简单分析,其实一些具体的细节确实需要实践不断的进行验证,然后形成自己的指导思想。或者可以这样理解,这些原则其实是思想指导下的一种行为准则。弄明白了这些,对这原则的认知会更清晰,但也可能因为没有在思想上认知清楚,反而更糊涂。
其实除了上面书本上经常遇到的几个原则,在实践中还会有一些其它一些经验性的原则也值得开发者去深刻的领悟和运用。可以把这些原则称为实践原则。

二、主要内容

目前比较常见的有以下几个原则
1、KISS原则(Keep It Simple, Stupid)
这可不是打呗儿原则啊,这是“傻瓜”原则。顾名思意,就是在完成功能的前提下,代码尽量简单,而不要搞过多的技巧或者复杂的算法。让一个初学者都能看懂就更好了。此处的简单和单一职责,有相通之处,但又各自的精髓。“大道至简”,就是这个道理。
KISS原则的精髓就在于一个简单,不仅是代码的简单,也包括设计的简单,更包括其它的简单。当然,“既要,又要还要”肯定是不大可能,所以简单是一个相对的概念而不是一个绝对的概念。一定要明白这个道理。也可以把这个原则当成一个所有原则的综合的要求的原则。
简单就意味着容易设计上容易扩展、代码容易维护以及更好的复用性。
2、DRY原则(Don’t Repeat Yourself)
“干”原则,这个太准确了。可以简单理解成,多写干货少写注水代码。什么是注水的代码?重复的,CTRL+C,CTRL+V的代码啊。其实这只是重复代码的一种,包括功能一致甚至类似,设计相似的架构等都算是重复的范畴内。
设计上,重复的功能模块要精简、整合甚至拆散。而代码上更要严格杜绝拷贝代码满天飞,至少要学会封装成类吧。重复的代码非常容易引进一些非特定性的Bug,容易因为同一Bug产生大量不同的问题。开发者还是要始终保持对代码整洁的一些洁癖为好。
3、YAGNI原则(You Aren’t Gonna Need It)
这个可以理解成“得过且过”原则,不过有点贬意,那就理解成“不贪心原则”。这也是经常对开发者提醒的,设计和开发的眼光要放长一些,但不要太长,要适度。问题这就来了,怎么才叫适度?总不能回归到玄学上吧。其实也很简单,满足基本功能,小规模迭代,敏捷快跑。
YAGNI原则其实就是要求开发人员不能过早的进行优化以及设计、实现一些中远期的功能。这样做的好处非常明显,最显著的就是降低了开发的工作量,提高了项目迭代的速度,更容易暴露出设计和开发的一些问题。及早发现及早处理,防止把问题引入到中后期形成技术债务。
不过,在这里还是要强调适度和适量冗余的思想,不能因噎废食,也不能搞“大而全”。最合适的才是最好的!

三、举例

理论很简单,咱们结合一些例子进行分析。比如程序中有一个判断语句,只有两个入口,if…else就能搞定。那么设计者和开发者就不要考虑太多,比如万一变成三个呢?五个呢?然后就考虑使用switch(代码层面),使用map映射(设计层面),这就是YAGNI原则,同样也可以认为是KISS原则。
再举一个例子,如果实现一个等待功能,sleep函数就能够满足,就不必要非要使用条件变量的wait。但随着开发的进展,可能需要使用wait了,再重构就是了。

四、总结

原则的使用,是思想指导实践的过程的准则。它不光是一些干瘪的词汇,更是很多前辈总结出来的经验教训。如何能够灵活的运用这些原则来指导自己的开发,就看开发者自己对这些原则领悟的的深度了。
“尽信书不如无书”,经验主义和教条主义害死人。开发者一定要真正的从思想上升华,进而灵活的运用这些原则,才是正理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值