哎,写代码的时间真的越来越少了……

还记得在读书的时候,就对程序员有种坐在电脑前疯狂敲代码的刻板印象。工作以后,逐渐理解了软件工程师的工作到底是怎么样的,可是写代码,作为软件工程师最重要的本职工作,还是占据了相当比重的时间。在面试别人的时候,也经常被问到这样的问题——“平均你每天有多少时间花在写代码上?”,这个问题看似简单,却能反映出一个问题,软件工程师,能否有足够的时间专注在最本职工作——写代码上。毫无疑问,我完全理解这样的问题,并且,我也一直以来想保持着自己一个 “纯粹” 程序员的身份。我觉得我的职业通道也是一条纯粹的技术人的道路,因而写代码,是一个如同每天吃饭喝水一样的基本操作。

可是,随着职业生涯的进展,特别是近半年来 [……]阅读全文

史上最烂的代码

shit 其实本没有什么代码是 “史上最烂” 的,要有也只有 “史上更烂” 的,我想随便说说这个话题,也是源自豆瓣的一个讨论。事实上,系统复杂了被骂代码烂是一件司空见惯的事情。当然,也有一些短小的代码片段,就足以看出代码作者是个不怎么样的人。

布尔类型的使用是很容易变成最烂代码的:

if (isTrue()) 
    if (isTrue()) 
        doSomething();
if(boolVal == true) { 
    ..... 
}

有一些毫无意义的注释:

return 1; // 返回 1
//如果标志为真,就返回 true
if(flag)
    return true;

更无意义

[……]阅读全文

代码的变与不变

change 哲学上说变与不变,讲的是绝对运动与相对静止的道理,在代码设计中,也有许多变和不变之间的辩证故事。

 

有一些类在创建以后,整个生命周期内都不会发生变化,这种模式被称为 Immutable Pattern。

较弱的不变模式:指的是一个类的实例状态是不可变化的,但是这个类的引用的实例却可以变化。

比如说:Visitor 模式常常是这样的,整个流程是不可变的,但是我为我的整个流程提供灵活的切入点,提供出来访问接口,供变化的部分完成。

较强的不变模式:一个类实例状态不可变,其内部引用的所有实例也不可变。

这个就比较多了,JDK 中的 String、Integer、Byte 等都是不可变的。

&nbs

[……]阅读全文

back to top