面向语义:就是尽可能简单的用伪码来描述你的算法逻辑;
实现一个函数“做饭”
实现方法一:
-->拿盆
-->往盆里装米
-->淘米
-->洗锅
-->把米放入锅里
-->放水
-->盖上锅
-->将锅放到灶上
-->打开煤气
实现方法二:
- func_淘米
- func_入锅
- func_点火
func_淘米
-->拿盆
-->往盆里装米
-->淘米
func_入锅
-->洗锅
-->把米放入锅里
-->放水
-->盖上锅
func_点火
-->将锅放到灶上
-->打开煤气
后者的实现,语义的描述上只用了3句话,前提是他做了额外的3次封装;这3次封装带来的好处是:只需要看3句话,我就知道这里是要“做饭”,如果你不关注“做饭”的细节,或者你早已知道这3句话的意义(真实实现),你可以不用看这3句话的封装;
注意:“做饭”在这里具有递归的性质,如果你对“入锅”不了解,那么你就可以看看func_入锅的实现;哦,哦,原来这样....
面向语义的中心思想
- 简洁
无论何时,无论你做怎样的封装,请让你的读者(很有可能是你自己)能够很简单的理解你要做什么!
象实现一中,一上来“拿盆”,天知道你要做什么(假设你没看函数名)!只能接着看第二句,如果算法足够复杂,很有可能看完了都没看明白
- 明确
实现二中,一上来就告诉大家“淘米”,基本上我都知道你是要做饭了
- 通俗
尽可能的用已有语义,比如vector中count,你偏要返回一个capacity,看了不晕才怪,要做到这一点就必须大量的积累concept,小学老师教了你多少词汇?你知道多少计算机的词汇?别自己在那里瞎编函数名、类名了;func1,也是没人能看懂的,但是“做饭”,就完全不同了;如果你知道了做饭的实现,那我的那一坨代码你都可以直接略过;这就是为什么经验丰富的人看代码比你快的原因,因为人家知道了大量词汇,词汇的实现基本上被他略过,要是你不按照通俗的语义来写,int i, j, k;高手看代码的速度就跟你一样了;
写代码就像写文章,先积累大量词汇(语义),然后用这些词汇组装成一篇漂亮的文章;
本文探讨了面向语义编程的重要性,通过对比两种不同的做饭算法实现,强调了封装可以提高代码可读性和理解性。面向语义编程的核心思想包括简洁、明确和通俗,提倡使用具有清晰含义的函数和类名,以帮助读者快速理解代码意图。
800

被折叠的 条评论
为什么被折叠?



