好久没有读书了呢
每日与手机电脑为伍,快节奏的生活让人孤独,是时候看看书给自己一些安静了
随便扯扯
这是一本真的很适合程序员的书,推荐看一下。
今天看了第一章,说了很多程序员应该注重的细节、应该养成的习惯,为人处世等方面,收获很多,但是还是得在具体的工作中消化,现在只是初窥良机,路还很长。
其中很深刻的话
Ps:有些话得看过文章才懂,有些话觉得很好但是我目前理解不了
-
关心你的技艺。
-
思考你的工作。
-
要提供各种选择,而不是找借口;不要说事情做不到,要说明能够做什么来挽回局面。
-
不要容忍破窗户,遇到小问题要及时解决。
-
参与正在发生的成功要更容易,让他们瞥见未来,你就能让他们聚集在你周围。
-
要持续不断的观察周围发生的事情,而不只是你自己在做的事情。
-
使质量成为需求问题。
-
不要因为过度修饰和过于求精而毁损完好的程序。继续前进,让你的代码凭着自己的质量站立一会儿,它也许不完美,但不用担心:它不可能完美。
-
定期为你的知识资产投资。
-
每年至少学习一种新语言、每季度阅读一本技术书籍、也要阅读非技术书籍、上课、参加本地用户组织、试验不同的环境、跟上潮流、上网。
-
不要就此止步,把找到的答案认为是对你个人的挑战。
-
批判和分析你听到的和读到的。
-
我相信,被打量比被忽略好。
-
规划你想要说的东西,列出大纲,然后问自己:“这是否讲清了我要说的所有内容?”提炼它,直到确实如此为止。
-
只有当你是在传达信息时,你才是交流。为此,你需要了解听众的需要、兴趣、能力。
-
为了了解你的听众需要听到什么,你需要弄清他们的“轻重缓急”是什么。
-
调整你的交流风格,让其适应你的听众。但是要记住,你也是交流的一方。
-
让文档美观。
-
让听众参与,如果你想要大家听你说话,你必须使用一种方法:听他们说话。
-
随时回复别人,会让他们更容易原谅你偶然的疏忽,并让他们觉得你没有忘记他们。
-
你说什么和你怎么说同样重要。
-
交流越有效,你就越有影响力。
-
我们都是在一个时间和资源有限的世界上工作。
-
系统中的每一项都必须具有单一、无歧义、权威的表示。
-
不要重复你自己。
-
糟糕的代码才需要许多注释。
-
不可信任的注释比完全没有注释更糟糕。
-
欲速则不达。
-
让复用变得容易。
-
消除无关事务之间的影响。
-
不要依赖你无法控制的事务属性。
-
编写“羞怯”的代码,也就是没有必要向其他模块暴露任何事情、也不依赖其他模块的实现的模块。
-
避免使用全局数据。避免编写相似的函数。
-
养成不断地批判自己代码的习惯,寻找任何进行组织、以改善起结构和正交性的机会。
-
如果某个想法是你唯一的想法,在没有比这更危险的事情了。
-
要把决策视为是写在沙滩上的,而不要把它们刻在石头上,大浪随时可能到来,把它们抹去。
-
不存在最终决策。
-
没有人知道未来会怎样,尤其是我们!所以要让你的代码学会“摇滚”,可以“摇”就“摇”,必须“滚”就“滚”。
-
用曳光弹找到目标。
-
为了学习而制作原型。
-
语言的界限就是一个人的世界的界限。
-
靠近问题领域编程。
-
估算,以避免发生意外。
-
通过代码对进度表进行迭代。
-
在被要求进行估算时说什么---你说:“我等会回答你。”
-
用纯文本保存知识。
-
利用命令 Shell 的力量。
-
用好一种编辑器。
-
进步远非变化组成,而是取决于于好记性。不能记住过去的人,被判重复过去。
-
总是使用源码控制。
-
这是痛苦的事:看着你自己的烦忧,并且知道,不是别人,而是你自己所致。
-
要接受事实:调试就是解决问题,要据此发起进攻。
-
专注于修正问题,而不是发起职责。
-
bug 是你的过错还是别人的过错,并不是真的很有关系。它仍然是你的问题。
-
最容易欺骗自己的人是一个人自己。
-
记住调试的第一准则:不要恐慌。
-
不要假定,要证明。
-
学习一种文本操作语言。
-
编写能编写代码的代码。
随便写点笔记吧
第一章 注重实效的哲学
1 我的源码让猫给吃了
不要寻找借口,从自身找原因,并且要做好充足的准备,应对出错时的情况
2 软件的熵
一句话:不以善小而不为,勿以恶小而为之.
从初期就要做好规范,初期的时候有人认为(自己也有这种想法)等到以后正式开发的时候再规范,而往往还未到正式开发,到处出现不规范的东西.加上拷贝粘贴的大法,亡羊补牢都晚了.这就是所谓破窗户理论.
另外,一定要把不好的代码扼杀在萌芽,及时处理蹦出来每一个小问题,因为一课老鼠屎会“慢慢”坏了一锅粥。
3 石头汤与煮青蛙
两个方面:
一还是'软件的熵'当中的含义,喜欢书里面的这段话:'大多数的项目的拖延都是一天一天发生的,系统一个特性一个特性的偏离其规范.一个又一个的补丁被打到某段代码上,直到最初的代码一点没有留下'. 就变成了“温水煮青蛙”。
二是团队的协同合作,这样“石头汤”也很鲜美.
4 足够好的软件
就是俗话说的一鸟在手胜于二鸟在林.
首先得确保软件可用性,至于亮点,特色,在可用以后才需要考虑.而且还得明确用户需求(虽然这点始终被强调).大家都知道系统不可能做的完美,但是自己着手开发的时候总是朝着尽可能完美的方向发展,欺骗自己说,这个功能多么伟大,一定要加上去,那个功能多么惊天动地,最后反而成为四不像,使项目延期.
5 你的知识资产
知识就是财富,永远不是空话。
作为程序员更要不断学习,不断为自己的知识投资,只有这样才不会被淘汰。
6 交流
这个世界不是只有一个我们自己,所以跟别人打交道至关重要。
首先要知道想要说什么,怎么说,什么时候说,谁在听;
其次要让听众参与,仔细倾听别人的观点和意图;
还有就是及时回复网络上的邮件和消息,用于交流的文档要美观。
第二章 注重实效的途径
7 重复的危害
copy paste大法带来的后果,虽然有时候是为了省事。
总之,当一份功能相同的代码在多处出现,需要修改这部分代码的时候,这个可以毫不客气的说就是灾难!
所以在设计,在编码初期就要有良好的规划,尽可能避免重复(不能偷懒呀)。
8 正交性
正交即尽可能的减少耦合,消除无关事物之间的影响。
正交的目标只有一个,让系统富有弹性,可以随需应变。
9 可撤销性
要有忧患意识,让代码可以撤销,让代码变得灵活。
做好随时根据领导要求而改变项目的准备(甚至是架构上的巨大改变)。
通常我们用面向接口的方式来做到这些。接口接口接口!(目前我还不太理解)
10 曳光弹
很炫的名字,感觉是在验证与测试中完善代码,一种区别于原型的思想。
11 原型与便笺
就像汽车模型一样,软件可以先制作出原型用于说明功能、完善功能。
原型不用考虑的太细节,只需要注重最本质的功能。
12 领域语言
不同语言有不同的优势,关键在于扬长避短,合理运用,有时候组合起来事半功倍。
13 估算
开始前做好计划,磨刀不误砍柴工。
第三章 基本工具
14 纯文本的威力
很多时候纯文本的简单让事情更容易。
15 Shell游戏
程序员必须掌握命令行,即使在windows下面。
也要熟悉 shell,这样会使很多东西可以精简并且自动化。
16 强力编辑
熟练使用好的编辑器会事半功倍。
17 源码控制
源码控制是卖后悔药的。
18 调试
一直以来,一直觉得,一个程序员的经验丰富情况很大程度依赖于他遇到的bug并解决的数量,所以一个人代码写的越多,解决的问题越多,那么他下次遇到问题时就越容易很快的定位。所以,有时候遇到问题并且成功的选择另外一个方案绕过去以后,不妨回头再看看原来到底为什么不行,毕竟下次也许你又要遇到,而且,更重要的是,可能到时候不能选择其他的方案。
19 文本操纵
我感觉就是把功能封装起来,方便操作,简化代码,简化工作量。
20 代码生成器
以前接触的很少,公司中用很常用,很省事的工具。