cg-smy

杨树花满天飘的中午 和二傻吃断了一支楼上楼的筷子

杨树毛向上飞

什么是 clean code

最近看到了一本书 Clean Code. 没有耐心读完,但是摘抄其中的几段。
# 以下是原文
What is clean code?

Bjarne Stroustrup, inventor of C++ and author of The C++ Programming Language
I like my code to be elegant and efficient. The logic should be straightforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy, and  performance close to optimal so as not to tempt people to make the code messy with unprincipled optimizations. Clean code does one thing well.

Grady Booch, author of Object Oriented Analysis and Design with Applications
Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer’s intent but rather is full of crisp abstractions and straightforward lines of control.

“Big” Dave Thomas, founder of OTI, godfather of the Eclipse strategy
Clean code can be read, and enhanced by a developer other than its original author. It has unit and acceptance tests. It has meaningful names. It provides one way rather than many ways for doing one thing. It has minimal dependencies, which are explicitly defined, and provides a clear and minimal API. Code should be literate since depending on the language, not all necessary information can be expressed clearly in code alone.

Michael Feathers, author of Working Effectively with Legacy Code
I could list all of the qualities that I notice in clean code, but there is one overarching quality that leads to all of them. Clean code always looks like it was written by someone who cares. There is nothing obvious that you can do to
make it better. All of those things were thought about by the code’s author, and if you try to imagine improvements, you’re led back to where you are, sitting in appreciation of the code someone left for you—code left by someone
who cares deeply about the craft.

Ron Jeffries, author of Extreme Programming Installed and Extreme Programming Adventures in C#
Ron began his career programming in Fortran at the Strategic Air Command and has written code in almost every language and on almost every machine. It pays to consider his words carefully.
In recent years I begin, and nearly end, with Beck’s
rules of simple code. In priority order, simple code:
• Runs all the tests;
• Contains no duplication;
• Expresses all the design ideas that are in the system;
• Minimizes the number of entities such as classes, methods, functions, and the like.
Of these, I focus mostly on duplication. When the same thing is done over and over, it’s a sign that there is an idea in our mind that is not well represented in the code. I try to figure out what it is. Then I try to express that idea more clearly. Expressiveness to me includes meaningful names, and I am likely to change the names of things several times before I settle in. With modern coding tools such as Eclipse, renaming is quite inexpensive, so it doesn’t trouble me to change. Expressiveness goes beyond names, however. I also look at whether an object or method is doing more than one thing. If it’s an object, it probably needs to be broken into two or more objects. If it’s a method, I will always use the Extract Method refactoring on it, resulting in one method that says more clearly what it does, and some submethods saying how it is done.
Duplication and expressiveness take me a very long way into what I consider clean code, and improving dirty code with just these two things in mind can make a huge difference. There is, however, one other thing that I’m aware of doing, which is a bit harder to explain.
After years of doing this work, it seems to me that all programs are made up of very similar elements. One example is “find things in a collection.” Whether we have a database of employee records, or a hash map of keys and values, or an array of items of some kind, we often find ourselves wanting a particular item from that collection. When I find that happening, I will often wrap the particular implementation in a more abstract method or class. That gives me a couple of interesting advantages. I can implement the functionality now with something simple, say a hash map, but since now all the references to that search are covered by my little abstraction, I can change the implementation any time I want. I can go forward quickly while preserving my ability to change later.
In addition, the collection abstraction often calls my attention to what’s “really” going on, and keeps me from running down the path of implementing arbitrary collection behavior when all I really need is a few fairly simple ways of finding what I want.
Reduced duplication, high expressiveness, and early building of simple abstractions.
That’s what makes clean code for me.

Ward Cunningham, inventor of Wiki, inventor of Fit, coinventor of eXtreme Programming. Motive force behind Design Patterns. Smalltalk and OO thought leader. The godfather of all those who care about code.
You know you are working on clean code when each routine you read turns out to be pretty much what you expected. You can call it beautiful code when the code also makes it look like the language was made for the problem.

宇宙变化的速度大于我们认识它的速度,所以只是是否是有穷的?

是否购买日货小思

看了一段视频,大体内容为激励中小学生努力学习,“为中华崛起而读书”云云。其中讲到了抵制购买日货的问题,对此观点我不敢苟同。

对于购买日货的问题,演讲稿部分摘录如下:

去年一年的时间里,中国人购买日本货,就花了一千三百一十亿美金!而去年日本的军事支出,仅仅是不到五百亿美金。也就是去年一年的时间,我们给日本人送去的钱,相当于给他们提供了两年半的军费啊!换句话说,他们撞我们船的那艘军舰,都是用我们的钱建造出来的,他们所有士兵的工资,都是用我们的钱开出来的,因为我们每花一百块钱买日本货,就相当于我们给日本送去了十枚子弹,反过来打我们自己,我们每买一百块钱的日本货,相当于给日本提供了八十七张的纸张,让他们用来篡改日本侵华的历史,所以孩子们,我们要清醒的认识到。

昨天早晨,日本内阁高级官员说了这样一段话,“钓鱼岛本来就是我们日本的,钓鱼岛事件丝毫不会影响到中日之间贸易的往来。”他的意思是什么?他说的就是在钓鱼岛事件上,我们日本人再欺负你中国人,中国人依然会买我们日本货。因为在前几年,日本松下的一个高官说过这样一段话,他说就是我们日本永远也不去参拜靖国神社,韩国人也不会买我们的日本货,就是我们天天去参拜靖国神社,中国人也会买我们的日本货。我们中国人怎么了?韩国也是同样被日本侵略的国家,但是韩国人,百分之九十九的人,从来不买日本货,但是在中国,每当提起日本人的时候,我们中国百分之九十九的人憎恨日本人,但是我们中国人,百分之九十九以上的人在买日本货。

所以孩子们,我们今天,不是我们政府懦弱,因为我们政府在谈判的时候,仅仅拥有的是一个政治砝码,因为我们中国加入WTO以后,是不能以政府的名义,干预和制裁日本经济的,但是我告诉大家一个事实,如果中国人1个月不买日本货,日本企业就至少有一千多个人失业,但是我们中国,就会有一万多个工人上岗;如果我们半年不买日本货;那么日本就有一千多家企业倒闭;如果我们1年不买日本货,日本就面临着崩溃和瓦解。我想到那个时候,钓鱼岛事件,还会像他们今天这样嚣张吗?他们会求我们。所以,在这点上,我建议我们在场每一位同学,学一学韩国和法国,他们是如何爱国的,他们从小,国家就告诉他们,买自己国家的产品,是光荣的事情;他们从小就知道,购买国货是在和平年代最大的爱国。我看到这条之后,我在全中国,呼吁我们每一位有良知的中国人,购买精品国货。我承认,我们每一个人也承认,我们中国的产品,在质量上,的确有些地方是不如外国的,我们要勇敢的面对我们的不足,这也恰恰是我们学生未来学习值得挑战的地方,因为你们将来要做企业家,要做世界的领袖,中国的产品,未来的质量,靠你们了!(掌声)

       国人为何购买日货?原因再明显不过,日货价格合理,质量优秀。为什么要抵制日货?因为我们爱国。但是,以“爱国”的名义来抵制日货是不对的!抵制日货就意味着我们要接受质量品质均差一些的国货,被迫接受一些性价比较低的产品。接受性价比低的产品而获取了爱国的名号,这是一桩合情合理的交易,而代价则是消费者的利益收到了一定的损失。请注意,我们没有理由因为爱国而损失自己的财产,除非自愿捐献。换言之,抵制日货的爱国思潮不应当成为买卖商品决策的考虑因素,我们不应该用“爱国”来绑架自己选择更优质,廉价商品的权益。

       国内缺少自由的市场竞争,从几千年的重农抑商的政治政策就可以看出来。而现代的大国,它的经济基础很大一部分就是建立在自由贸易的基础上的。承认公民的财产权利,承认公民的贸易自由,这是每个大国应该做到的亦或是努力的方向。由于闭关锁国而缺少贸易的弊端,中国的近代历史早已尝够。要想富强,很重要的因素就是鼓励产品竞争,减少贸易保护,也就是不要因为所谓爱国而不去购买质优价廉的物品,这样会纵容国内的生产厂商,减少他们在国际上的竞争力。

       我国正在改革与发展的十字路口,眼前的美国近在咫尺,在国际上要成立亚投行以输出产能,增加生产制造能力,在国内更要深化改革,谋求发展,从量大到质优,从制造到创造,这还有好长的一段路要走,包括精密仪器,半导体,核心操作系统等诸多方面。只有克服这样的困难,中国才能走上世界的巅峰。在那个时候,我们就可以骄傲地说:不买日货,不是因为爱国。

链接如下:

http://mp.weixin.qq.com/s?__biz=MjM5NDM5Nzg5Nw==&mid=205593122&idx=4&sn=d281dd7857b0f3289d4d8be6f16f54a8&scene=1&key=1936e2bc22c2ceb5571074f27ae5a1ae898fe57b246235e4f0f3c9de245fee69d650dcaef9c8a175d9b4cad3af606b7b&ascene=1&uin=MTUwMDgyNTEwMQ%3D%3D&devicetype=Windows+8&version=61000721&pass_ticket=d884S2h0jN2kqBtf67cL2%2B7IDxIwmk57ZwoIco6Gv4yU4Yku9%2FSNemuyA7QVBobX


你没有变强是因为你一直很舒服

夏木山崎·LoFoTo:

阅读文字:



   这个世界上有两种人,一种人是强者,一种人是弱者。强者给自己找不适,弱者给自己找舒适。想要变得更强,就必须要学会强者的必备技能,那就是让不适变得舒适.


 


      如果你学会了这种技能,你可以搞定很多事情,例如克服拖延,健身,学习新语言,探索未知领域等等。但是很多人都倾向于回避这种不舒适,毕竟没有一件事情是简单的,都需要付出很多努力,忍受很多痛苦,甚至是让自己遍体鳞伤。例如,你想要改掉拖延的毛病,你必须要在任务出现的时候给自己设定时间期限,然后立即去做,直到任务完成。但是在做的过程中会有各种各样的干扰,你必须要与之相斗争,其过程必然是痛苦的,这种不适会持续很久,直到有一天你习以为常了,那么你也就不再拖延了。这个过程,就是让不适变得舒适,变得像睡觉前刷牙一样,成为一种习惯。


 


      我以前一直很觉得我们应该让自己舒适一些,但是后来我明白一些不适有时并不是件坏事。事实上,你可以学会享受这种不适,例如,我每天都会做一些力量训练,虽然这点不适不会严重到我讨厌的地步,但是人就是这样的,能逃避的困难,我们总能找到借口。我开始告诉自己,既然锻炼肌肉这点痛苦和不适并不影响什么,我不如坚持下去,看看结果怎么样。于是,我制定了计划表格,让这点不适参与我的生活,形成一种习惯。每当我完成15个引体向上,我会在引体向上那一栏写上15,每个月我都会换新的纸张,并总结上个月的情况。不经意间,几个月时间我已经做了1000个引体向上了。


 


      用同样的方法,我们可以训练自己早起的习惯,其实每天闹铃一响就起床和再睡几分钟起床效果没有什么区别,但是,前者会有点小不适,后者会更舒适一些。我给自己制定了闹铃一响就起床的计划。只要我能在闹铃响后就立刻爬起来,就在纸上写下+1,如今,已经坚持超过200+了。


 


     后来 ,我发现任何只要是有一点不适的事情都是可以训练的,我们可以将一件不适的事情变成一种习惯,然后你会离不开它,觉得这点小痛苦其实是平淡无奇生活中的一种调味料。这件事由不适变得舒适,良好的习惯就是这样养成的。


 


       具体的方法如下:


 


       找到一件你想做的事情,这件事情会让你有点小不适,但是做成了以后你会收获很多。例如,健身。


 


      你可以把这件事情分解成1000个独立的事件,要确保每个事件都在你能容忍的不适程度内。你可以先测试一下你尽全力最大的容忍程度,然后减去20%,从这个值开始。例如,我想要做10000个引体向上,那么分成1000份,就是每次10个。


 


     开始去做,并且不要强迫自己,把它当做一种乐趣去挑战。例如,今天我做了10个,那么就剩下999份了。在以后的日子里,我可以随时随地,想做就做,只要完成这1000份事件,我的目标就达成了。


 


      随着你的能力增强,逐渐增加分量,例如一个月后,你可以做到15个,3个月后,你可以做到25个。所以,10000个看似需要1000天才能完成,事实上,你可能9个月就搞定了。


 


      这个方法的精髓在于把一个很大的痛苦分解成1000份小不适,然后将它融入每天的生活中,培养成习惯,将不适转变成舒适。


 


       我们可以通过上面的这种方法,对自己的能力进行提升,改变一些坏习惯,培养一些好习惯。


 


       1、拖延的习惯。我们为什么要拖延,主要原因在于我们要做的事情令我们感到不适。所以,我们的头脑会产生各种各样的借口和诱惑,来促使我们去做更容易的,更舒服的事情。但是,这对我们应该完成的任务没有任何帮助。有的时候,我们甚至会变得急躁和焦虑。这种拖延的习惯从生理上来讲是我们生物的本能——趋向有利刺激,躲避有害刺激。当我们把一件事情定义为“不舒适”的时候,我们会本能的不想去做它,想方设法拖延到明天。为了将这种习惯性的拖延频率降低甚至是消除,我们将要付出很大的痛苦。但是,如果我们能够把这种痛苦分解成1000份,变成可以忍受的程度,那么事情就变得容易了。 我们可以制定一个表格,叫做“战胜拖延”。每次有想要拖延的想法的时候,就立刻去做,完成任务之后就在表格上+1,当完成1000+的时候,拖延的习惯就根除了。


 


      2、健身的习惯。我们不去健身因为我们感到不舒适,但是如果每次有意识的让自己承受一些不适,会逐渐提升自己的忍耐力,一旦养成一种习惯,我们会依赖于这种不适带给自身的有利刺激,让自己感到更有活力。


 


      3、阅读的习惯。没有阅读习惯的人会把读书看成是一件很痛苦的事情。如果你能够建立的一个表格,让自己每读完一章节就在上面写上+1。逐渐养成习惯以后,改成阅读一本书写上+1,你会发现一个月你甚至能够读上5本书。然后阅读会变得不再痛苦,而成为一种习以为常的事情。当你能够跟别人谈起你阅读的著作以及你的看法,会是一件很有成就感的事情。


 


      4、早起的习惯。要培养早起的习惯首先要为自己设定一个早起的目的。而且这个目的会让你很期待第二天的早晨快点到来。如果你是一个吃货,不妨睡前准备好一顿丰盛的早餐食材,等早上起床给自己做一个很好吃的早餐。我给自己设定的早起目的是玩半个小时游戏(很神奇吧),这对我来说很有吸引力。于是,如果我想要6点半起床,那么我会把闹铃定在6点,然后快速起床,开机时间我会搞定刷牙洗脸,然后热一杯牛奶,一边打游戏,一边听着英语广播。这个好处就在于我不会再花其他时间来玩游戏了,每天我都会有固定的半小时玩游戏,并且我也不会痴迷游戏而耽误了学习。相反,这个习惯让我早起更有动力。通过这个方法,我将不适转换为舒适,让本来很难得事情变得容易而且备受期待。


 


      5、写作的习惯。读书再多如果不写出来,就不能成为自己的东西。如果不能向别人说出来,就不能得到修正与反馈,也无法知道自己的观点是处于什么样的水平。写作是一个整理自己想法的很好的工具,将平时阅读中的论点整理出来,加以思考,总结成自己的话语。这样,逻辑能力和思考能力就会逐渐加强。当然,写作是件比较痛苦的事情,你需要整理自己的思绪,并且组织语言将它们表达出来。而且,当你对着电脑的时候,还要排除各种杂事的干扰,这对专注力也是一种锻炼。


转自:网络