代码应具有逻辑性强,什么不需要了解代码的逻辑结构
在我看来,一个程序最重要的是“逻辑表示”的优化,其次才是“性能”。当然,肯定会有需要性能的场景,但这不是“追求”,而是用大量积累的经验做出的正确决定。即使在那种情况下,“逻辑表示”仍然非常重要。
“逻辑?
“表现”的意思就是如何用程序清晰地体现你的逻辑。每一个程序的目标都是解决一个具体的问题,有一个解决问题的思路。这个想法被程序表达出来就是逻辑。还有初中
证明高中的数学题是一样的,逻辑清晰,并表达出来,才是最终目的。现在,只不过是把原本写在纸上的文字通过代码表达出来。
实际上是写代码
它还使用一种特殊的语言,——编程语言,而不是文字来表达一个意思。平时写文章要注意分段、分层、组织,写程序也是一样。可能因为你水平有限,一时半会儿还不了。
你写不出华丽优美的文字,但写文章的首要目标是“清楚”,让别人明白你的意思。写程序也是如此。写程序的时候,不要总想着用什么技巧,追求这些技巧。
聪明的好处。
老赵承认,每一项技能都有它的作用,否则就是“笑话”,而不是“技能”。但是,有得有失,某项技能必然有其缺陷。比如上一个题目“数组元素交换”,有个朋友认为不应该用额外的变量来交换两个元素,即:
数组[j]=数组[i]数组[j];
array[I]=array[j]-array[I];
array[j]=array[j]-array[I];
他认为这段代码节省了额外的空间,这在内存紧张时是必要的。但老赵认为,可读性到这里就丧失了。对于一段标准的交换代码,每个人都知道它的用途,但是正在看这篇文章的你能马上反应出上面三行代码的作用吗?
在编程领域有一个广为流传的真理:快速制作干净的代码远胜于快速制作代码。
简单来说,这里的clean无疑就是“清楚”的意思。因为代码清晰,所以我们可以找出它的性能瓶颈,然后有针对性地进行优化。要知道调用一个
20%的进程被优化,比80%的进程被调用10次(假设两个进程的原始消耗接近)要明显得多。
就拿那个朋友的观点来说,记忆紧张的时候怎么办。也许他确实省了一些钱(但高级语言中的“省”对于最终编译结果是两回事)。但是在记忆中
当你紧张的时候,首先要做的就是努力找出最耗费资源的地方,然后进行优化。所以有可能针对某个问题重新设计它的数据结构,比如压缩数据存储方式,份额数量等。
根据空间等等,而不是试图保存一个单词长的记忆。那么,我们如何促进瓶颈的发现呢?
安全。
当然,上面的代码不是不可用,但是如果真的要这么做,请封装成一个子方法:
私有void Swap(int[] array,int i,int j)
数组[j]=数组[i]数组[j];
array[I]=array[j]-array[I];
array[j]=array[j]-array[I];
一旦你分离了这个逻辑,在代码中只应用了Swap方法,程序马上就变得清晰了。而且这时候这三行代码就变得好理解了,别人也能一眼看出它的作用,因为方法的名字已经说的很清楚了:交换。
所以我们写程序的时候,要仔细思考如何把变量名、方法名或者参数名说清楚,如何让程序的逻辑更清晰,如何更好的把你的意图告诉别人。
剩下的细节优化,什么内联子流程.让编译器来处理这一切。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。