加载中 ...
首页 > 新闻资讯 > 经验心得 正文

关爱码农成长:关于写代码二三事

2019-03-25 09:39:37 来源:沈阳软件公司 作者:沈阳软件开发

: There are only two hard things in Computer Science: cache invalidation and naming things.

压制copy & paste 及产出一堆烂代码的激动:

——Bingo! 找到一段代码了,看我的copy & paste

——可以运行就很好啦、这么漂亮的解法……

——好累,我不行了,先commit code 再说

commit code 之前,自己再好好review一次(我小我私家履历,通常这个步骤可以革新代码好几个地方)

10. 越容易维护、扩展的代码,代表它的庞大度越低

降低软件庞大度是软件工程的最大挑战,软件庞大度直接决议软件的生命。

必须做到low couplinghigh cohesion,而这两件事都很难

低庞大度的软件系统,代内外面各个模块的庞大度都必须更低

——当你容易多用了一个外部组件、增添了一个external dependency,你就把它的庞大度整个带进来了,以是要很小心。

11. 现实情况的因素,导致好的代码不易发生

项目历程中的压力

程序员履历的限制

团队未接纳一些最佳实务

有决议权的人对软件开发不够相识

代码品质的主要性,每小我私家都知道,连路人甲都知道。现实的难处在于:第一版的代码,只要能事情,品质优劣是很难看出来的;它们的差异,要到系统后续的运行、维护及扩展才气看出来,然而此时木已成舟,代码只能修修补补继续用下去,最多小幅重构(refactor),直到软件生命周期的竣事。

写出好的代码,时间会花比力久、会导致项目时程延后吗?实在并不会,这是能力限制,不是时间限制。写出第一个版本,花的时间都差不多。但后续版本就差许多了,写得越好的代码越好改。你若是悔改那种high coupling 的系统,你就知道我说的意思了,那真是人仰马翻,超high 的。这种代码要是装在箱子裡,箱子上会标示「易碎/FRAGILE」。

写出好的代码并不容易。如果我们从1分到10分给代码码打分数,10 分真的很难很难,我自己也做不到。但一样平常人经由起劲,到达67 分应该是没问题的。若是你想看书,我在这裡推荐一本:Code Complete 2nd Edition。教人写代码的书中,这是我看过最好的一本了,只是内容比力多,需要时间消化。若是另有兴趣多看,我小我私家以为Martin Fowler 也写了不少好书。

三、程序员进阶能力

具备以上的程序员基本能力,我想就足以胜任大部门「单兵程序员」的事情了。若是想在手艺上更上一层楼,以下是几个我以为比力主要的进阶能力,提供应各人参考。

1,作业系统

大学修的那么多课内里,我感受对事情最有用的就是「作业系统」这门课了。对作业系统(OSoperating system)的相识,是资深程序员应该具备的。例如:

Hardware: CPU, memory, I/O devices

Process, multi-thread, scheduling

Inter-process communication: signal, socket, pipe, named pipe, shared memory, message queue⋯⋯

Synchronization, deadlock, mutex, semaphore

File system, cache, virtual memory, page fault⋯⋯

Real-time system, distributed system

作业系统自己就是一支超大型程代码,有著无数前人的心血。加上作业系统的基本观点,几十年稳定,以是花点时间弄清晰这些看法,我以为很值得。

2,资料库

不是每个程序员的事情都市使用到资料库,而且现在不少人用数据存资料。只管云云,我以为关连式资料库(relational database)照旧很主要,不管是MySQLPostgreSQLMS SQL Oracle 都好,资深程序员应该至少对其中一种有相当的相识。

题外话,多年月码写下来,我对ORMobject-relational mapping)抱着存疑的态度。网上有篇文章:Object-Relational Mapping is the Vietnam of Computer Science,应该是反ORM 的代表作之一,有兴趣的人可以看看。另有一篇著名的文章:

“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。