低级程序员和高级程序员区别

1、引言程序员

     原计划是昨天(每周日写一篇博客)写博客,可是昨天去北大上课了,学习回来晚了,有点累了就没有写,只好今天补上了。不知不觉我已经工做了4年了,按照年限,我应该是高级的水平了,但是如今的我,自我感受仍是处于一个低级。以前咨询了不少大牛,问他们怎样才能成为一个高级程序员,工做经验,技术掌握,开发的效率等等。最后获得的是思想逻辑和抽象。网络

2、低级程序员和高级程序员区别:学习

低级程序员认为本身与高级程序员的区别,主要是高级程序员任何功能都能编码实现,编码速度快, 代码无 bug。 正如一惯的那样, 低级程序员之因此低级,正是由于他们勉强能看到(或者根本看不到)事物的表象而看不到本质。因此,低级程序员总结出的一切东西,你均可以大胆的忽略。编码

因此,咱们来听听高级程序认为本身与低级程序员的区别是什么。高级程序员之因此高级, 在于他们认识到代码 bug 是不可避免的,有千万种理由能够致使 bug,但他们能够在设计和逻辑上保证(追求)滴水不漏,并用逻辑的百分之百准确性还减小代码 bug。 没错,严谨的逻辑能力是高级程序员区别于低级程序员的最主要缘由。设计

能够举一个简单常见例子: 网络购票终端的开发。固然,比低级程序员还低级的程序员作不出来。 咱们先看看低级程序员是怎么作:开发

order = Db::new_order();
ret = Network::place_order(order);
if(ret == TRUE){
    order.finish();
}else{
    order.cancel();
}

你看到的没错,这段代码逻辑清晰,通常 90% 的状况都能正常工做,有的甚至能达到 99%, 在某些特定的时间段,这样的系统 100% 能正常工做(几乎是完美的系统)。博客

你可能发现了问题:网络是不可靠的,网络请求可能发出去了, 也可能没发出去;对方可能收到了,也可能没收到;响应可能由对方发出去了,也可能没发出去; 你可能收到了响应,也可能没收到。效率

可是, 低级的程序员会这样解释:我用的是 TCP 协议,"TCP 是一种可靠的传输协议", 哈! 好笑的照本宣科。 这种低级程序员, 不只在于他们写出了逻辑上不完备的系统, 并且还恶劣地引经据典来作错误的辩护。但他们引用的经典是不合时宜的(不能支撑他们的结论)。重构

正确的作法应该是假设上面的每一行代码均可能中断执行,而后进行相应的对策。正如狭义上的网络协议实际上是广义上的交互协议, 咱们可能把 TCP/IP 协议上的许多思想和机制应用到系统间的交互上来。终端

简单来说, 能够加上就是重试(超时重传)和对帐(请求确认)。因此, 逻辑上更准确的代码应该是这样:

Process_0{
    order = Db::new_order();
}
Process_1{
    order = Db::find_new_order();
    ret = Network::query_order_result(order);
    if(ret == NOT_FOUND){
        ret = Network::place_order(order);
        if(ret == TRUE){
            order.finish();
        }else{
            order.cancel();
        }
    }
}

Process_0 和 Process_1 是相互独立的处理逻辑。

Process_0 即处理用户交互, 接受订单。

Process_1 请求服务提供商进行对帐。进行采购下单(补单), 更新订单状态。

上面的代码逻辑实现了重试(超时重传),对帐(请求确认)。但上面的代码在逻辑上还不是 100% 准确的,例如,若是对方系统误报呢? 但其它的异常状况能够根据实际状况来忽略。

记住,低级程序员和高级程序员的区别在于逻辑和抽象。要成为一个高级程序员,要作到工做上的严谨,认真,注重细节的地方,看到别人看不到的问题。能想到一切可能出现的bug,把出现率都降到最低,而且代码都是重构以后的,不能再重构了。

3、总结

以上只是我的的看法,表明我的的一些见解,若是不符,你们就当看看而已。O(∩_∩)O哈哈~

相关文章
相关标签/搜索