关于代码布局(Coding Layout)
研究发现,缩进可以提高程序员的理解能力(<<Program Indentation and Comprehensibility>>, Miaria et al. 1983)。缩进是代码布局的一项技术。作为代码布局并不像命名和注释那样明确,它更像一种感觉。比如摄影的构图,或者国画的留白。虽然很难给一个标准的评价标准,但是<<代码大全>>的作者Steve.McConnell和<<程序员修炼之道>>的两位作者还是给了一些建议。
首先,需要先明确代码的重要性。对于绝大多数软件项目而言,代码是用来沟通的(参考),以便于别人的阅读理解。(至于为什么,参考这里)
使用的好布局可以达到以下的效果:
var tablink;chrome.tabs.getSelected(null,function(tab){var tablink=tab.url;document.getElementById("url").value=tablink;document.getElementById("url").focus();changeBarCode();});function changeBarCode(){var text=document.getElementById("url").value;if(0==text.length){text="http://blog.csdn.net/horkychen";} var newPicUrl="xxxx"+text;}
var tablink; chrome.tabs.getSelected(null, function (tab) { var tablink = tab.url; document.getElementById("url").value = tablink; document.getElementById("url").focus(); changeBarCode(); }); function changeBarCode() { var text = document.getElementById("url").value; if (0 == text.length) { text = "http://blog.csdn.net/horkychen"; } var newPicUrl = "xxxx"+ text; document.getElementById("barcode_img").src = newPicUrl; }魔鬼在细节之中。从知道到懂关键在细节。缩进就不用说了, 看一下空行的运用。 第一点,这段代码中三块段落之间被两行空行隔开,可以大概看出包含了三段内容。 第二点,比如下面这个函数,其函数体被空行分成了三个部分,一眼望去就可知道有三段不同功能的代码。
chrome.tabs.getSelected(null, function (tab) { var tablink = tab.url; document.getElementById("url").value = tablink; document.getElementById("url").focus(); changeBarCode(); });其中前后两行意义比较独立,中间两行归在一组完成控件设定和选中的功能。也就相似的代码归在一起,再使用空行将这样不同的段落分隔开来。像不像作文里面讲的布局规则。(比如我的博客就没有按标准段首两个字的缩进,而是用的英文顶行写的.) 如果换一种写法(为了强化概念,我添加了一些代码):
chrome.tabs.getSelected(null, function (tab) { document.getElementById("url").focus(); var tablink = tab.url; if (tablink != undefined && tablink.length > 0) { tablink = "http://blog.csdn.net/horkychen"; } document.getElementById("url").value = tablink; changeBarCode(); });
chrome.tabs.getSelected(null, function (tab) { var tablink = tab.url; if (tablink != undefined && tablink.length > 0) { tablink = "http://blog.csdn.net/horkychen"; } document.getElementById("url").value = tablink; document.getElementById("url").focus(); changeBarCode(); });
if ( ( (con1) || (con2) ) && (con3) && (con4) && (con5) && ( (con6) || (con7) ) ){ ;}写成这样呢,你是什么感受:
if ( ( (con1) || (con2) ) && (con3) && (con4) && (con5) && ((con6)||(con7)) ){ ;}