这个问题是关于代码规范或者说代码习惯


楼主是一名javascript coder,最近遇到一个问题,是关乎代码的规范和风格的,需要从业在代码领悟多年的大侠指点一二,望打通我的几根血脉,茅舍顿开。

说明:其实这个问题不好表达,也不好描述。

我思考了几天整理了一些问题,大致是:思维逻辑,代码规范,规范标准

1.思维逻辑
比如 1+2+3....100咱们写一个1加到100的代码:


 function sum1(n){
    var n = 0;
    for(var i = 1; i <=n;i++){
        n = n + i;
    }
    return n;
}


 function add(n){
    return (1+n)*n/2;
}

这属于 逻辑思维方面的,这2个都可以实现功能,但是第二种更加优美,简洁,这方面的能力需要怎么提高。

2.代码规范
比如:一个方法只用了一次,但是楼主深受ruby和asp影响,喜欢什么都写成方法,如:


 function show(n){
    fn(n);
}

function fn(str){
    console.log(str)
}

完全可以写成这样:


 function show(n){
    console.log(n);
}

我这是举例,我肯定不会因为一个console.log就单独写个方法,只是举例

3.规范标准
比如:什么时候用方法封装,依据是什么,什么时候应该把代码归类,比如 处理一组Img的方法,咱们应该:


 var img = {
    getimg:function(){},
    setimg:function(){}
}

楼主对于上面3个问题的能力,需要怎么加强?大家集思广益,如何才能写出高质量的代码,可以维护的代码。

代码规范 JavaScript

nsover 11 years, 10 months ago

tl;dr

  1. 算法
  2. 抽象
  3. 同2

  1. 第二种看着简洁,但未必永远都最好;在本例中当然是好的,大部分时候也应该是除了可读性之外都更优于第一种的,然而即使是第一种,好程序员也不应该写成那个样子,还有改善空间。说到可读性方面也要看受众:对于数学不好的的人,比如我,看第一种更容易明白。但对于数学基础扎实的人,第二种应该也没什么障碍吧。因此,若你追求第二种写法,就去提高用数学解决/表达问题的能力。这方面我很差,就不多扯了。
  2. 抽取更小粒度的方法是重构里最基础最常用的技巧,应否抽取是要看上下文的。基本上只要有可重用的机会,抽取出来就是 OK 的。你举的例子,我明白你的意思,但由于缺少上下文,所以无法说好与坏。现实中的选择,也是要取决于实际的代码环境,没有必然的规则。
  3. 第2条实际上是从一个方面体现了你的抽象思维能力,第3条也是类似的——从代码组织的层面。我觉得这方面的话题真是见仁见智,而且很多时候并不是自己决定就 OK 了,还得看身边的人。

说白了,你写的代码如果只是你自己看,你写成什么样都无所谓,只要它能用;如果糟糕的结构和组织性带来了性能和维护上的问题,你自然会慢慢改善它——但是好代码都不是一次写成的。另一方面,如果你不是只给自己看,你要考虑和团队之间的协作等问题,那么代码风格或规范之类的东西应该是来自整个团队的共识。有时候你不得不妥协退化,或者努力学习进步,一切都是为了让大家能够说“同一个宇宙的语言”,否则你会很痛苦,用不了多久就会心灰意冷。

题主应该是有受 Ruby 语言影响的人,上个月 RailsConf 开场时 DHH 作的 Keynote Presentation 不知道你看了没有?如果没有,去看看吧,你要的答案里面就有: Writing Software - RailsConf 2014 by DHH

我勒个去去 answered 11 years, 10 months ago

Your Answer