快速业务通道

写出漂亮代码的七种方法

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-03

首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术、逻辑等。以下为写出漂亮代码的七种方法:

1.尽快结束 if 语句

例如下面这个JavaScript语句,看起来就很恐怖:

function findShape(flags, point, attribute, list) {
  if(!findShapePoints(flags, point, attribute)) {
    if(!doFindShapePoints(flags, point, attribute)) {
      if(!findInShape(flags, point, attribute)) {
        if(!findFromGuide(flags,point) {
          if(list.count() > 0 && flags == 1) {
             doSomething();
          }
        }
      }
    }
  } 
 }

但如果这么写就好看得多:

function findShape(flags, point, attribute, list) {
  if(findShapePoints(flags, point, attribute)) {
    return;
  }
  if(doFindShapePoints(flags, point, attribute)) {
    return;
  }
  if(findInShape(flags, point, attribute)) {
    return;
  }
  if(findFromGuide(flags,point) {
    return;
  }
  if (!(list.count() > 0 && flags == 1)) {
    return;
  }
  doSomething();
}

你可能会很不喜欢第二种的表述方式,但反映出了迅速返回if值的思想,也可以理解为:避免不必要的else陈述。

2.如果只是简单的布尔运算(逻辑运算),不要使用if语句

例如:

function isStringEmpty(str){
  if(str === "") {
    return true;
  }
  else {
    return false;
  }
}

可以写为:

function isStringEmpty(str){
  return (str === "");
}

3.使用空白,这是免费的

例如:

function getSomeAngle() {
  // Some code here then
  radAngle1 = Math.atan(slope(center, point1));
  radAngle2 = Math.atan(slope(center, point2));
  firstAngle = getStartAngle(radAngle1, point1, center);
  secondAngle = getStartAngle(radAngle2, point2, center);
  radAngle1 = degreesToRadians(firstAngle);
  radAngle2 = degreesToRadians(secondAngle);
  baseRadius = distance(point, center);
  radius = baseRadius + (lines * y);
  p1["x"] = roundValue(radius * Math.cos(radAngle1) + center["x"]);
  p1["y"] = roundValue(radius * Math.sin(radAngle1) + center["y"]);
  pt2["x"] = roundValue(radius * Math.cos(radAngle2) + center["y"]);
  pt2["y"] = roundValue(radius * Math.sin(radAngle2) + center["y");
  // Now some more code
}

很多开发者不愿意使用空白,就好像这要收费一样。我在此并非刻意地添加空白,粗鲁地打断代码的连贯性。在实际编写代码的过程中,会很容易地发现在什么地方加入空白,这不但美观而且让读者易懂,如下:

function getSomeAngle() {
  // Some code here then
  radAngle1 = Math.atan(slope(center, point1));
  radAngle2 = Math.atan(slope(center, point2));
  firstAngle = getStartAngle(radAngle1, point1, center);
  secondAngle = getStartAngle(radAngle2, point2, center);
  radAngle1 = degreesToRadians(firstAngle);
  radAngle2 = degreesToRadians(secondAngle);
  baseRadius = distance(point, center);
  radius = baseRadius + (lines * y);
  p1["x"] = roundValue(radius * Math.cos(radAngl

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号