技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

12 2013 档案

一段代码,欢迎讨论
摘要:/*从朋友那看来的,因为他十分警惕的守护自己的代码所以下面的代码都是凭着我的记忆写下的伪代码,别问我这是什么语言,大致就是类C语言吧这是一个消息转发系统的一个子系统,这个系统通过转发消息收取费用子系统的功能是读取消息,判断能不能转发,并设置收费标志由别的子系统完成收费,转发的动作问题:这个程序需要重构吗?如果需要怎么重构?*/void main(){ Queue queue = new Queue(); while(Message message=queue.Get()) { process(message); }}void process(Message... 阅读全文

posted @ 2013-12-31 14:24 codestyle 阅读(777) 评论(1) 推荐(0) 编辑

重构后的程序:通过rsync命令抓取日志文件
摘要:push.sh#!/bin/bashfunction push(){ local ip=$1 local user=$2 local password=$3 local path=$4 local localPath=$5 local error=$6 :>$error export RSYNC_PASSWORD="$password" rsync -Cavz $user@$ip::$path $localPath > $error 2>&1 # 判断是否... 阅读全文

posted @ 2013-12-27 17:40 codestyle 阅读(713) 评论(0) 推荐(0) 编辑

重构前的程序:通过rsync命令抓取日志文件
摘要:基本概况:我有一台服务器每天每个小时都会生成一个日志文件,这些日志文件会被保留2天,超过2天会被一个程序压缩放到备份目录,日志文件的文件名是有命名要求的,例如:project_log.20130101.01,project_log.20130101.02 意思即:2013年1月1日1点和2点生成的日志文件,他们被备份后的文件名是:project_log.20130101.01.gz,project_log.20130101.02.gz另外有一台服务器可从这台服务器上抓取文件,它即可以抓取昨天生成的尚未备份的日志,也可以抓取比较早的已经被备份的数据,还可以抓取当天已经生成了的日志文件#!/bin 阅读全文

posted @ 2013-12-27 17:35 codestyle 阅读(1180) 评论(0) 推荐(0) 编辑

标准输入、输出和错误和文件重定向
摘要:标准输入、输出和错误当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。下面就是这些文件描述符及它们通常所对应的文件名:文件文件描述符输入文件—标准输入0:它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。输出文件—标准输出1:它是命令的输出,缺省是屏幕,也可以是文件。错误输出文件—标准错误2:这是命令错误的输出,缺省是屏幕,同样也可以是文件。系统中实际上有1 2个文件描述符,但是正如我们在上表中所看到的, 0、1、2是标准输入、输出和错误。可以任意使用文件描述符3到9。标准 阅读全文

posted @ 2013-12-27 14:06 codestyle 阅读(1270) 评论(0) 推荐(0) 编辑

错误处理的思考
摘要:def catchLogByHour(..., errorHandler): while ....: if hasError: errorHandler(...) def error1(...): ....catchLogByHour(...,error1)def error2(...): ....catchLogByHour(...,error2)def error#(...): ....catchLogByHour(...,error2) 阅读全文

posted @ 2013-12-26 19:26 codestyle 阅读(159) 评论(0) 推荐(0) 编辑

测试和恢复性的争论:面向对象vs.函数式编程
摘要:Michael Feathers最近的博文在博客社区引发了一场异常激烈的论战。Feathers发表言论说一些面向对象编程语言的内嵌特性有助于测试的进行,并且使用面向对象编程语言编写的代码更容易恢复。他举了这样一个例子,class X有一个叫作badMethod的方法,这个方法处理一些“痛苦”的工作,比如调用并更新产品数据库、或者处理一些甚至关系到底层硬件的事务:public class X { public void method() { ... badMethod(); ... } ...}理想的设计是,系统可以允许独立测试一般的类和类组... 阅读全文

posted @ 2013-12-25 13:14 codestyle 阅读(402) 评论(0) 推荐(0) 编辑

哈佛经济学家关于工作效率的意外发现
摘要:http://www.aqee.net/a-harvard-economists-surprisingly-simple-productivity-secret/职业人士最常见的一种抱怨是:时间太少。每周工作超过60小时的人会抱怨甚至挤不出时间来处理他们邮箱里的邮件,更别说有创见性处理大项目中的问题。但时间并不是问题,哈佛经济学家Sendhil Mullainathan说。最终阻碍你成功的是你的大脑“带宽”使用效率,或集中精力的能力。Mullainathan的研究主要针对是资源稀缺情况,当人们缺少某些东西时会如何应对——可以是缺钱,食物或时间。他和他的搭档普林斯顿大学的心理学家Eldar Sh 阅读全文

posted @ 2013-12-24 15:30 codestyle 阅读(250) 评论(0) 推荐(0) 编辑

追求代码质量: 监视圈复杂度
摘要:http://www.ibm.com/developerworks/cn/java/j-cq03316/每位开发人员对代码质量的含义都有着自己的看法,并且大多数人对如何查找编写欠佳的代码也有自己的想法。甚至术语代码味道(code smell)也已进入大众词汇表,成为描述代码需要改进的一种方式。圈什么?关于这篇文章和代码质量主题的任何其他文章的问题,请访问由 Andrew Glover 主持的Improve your Java Code Quality讨论论坛。代码味道通常由开发人员直接判定,有趣的是,它是许多代码注释综合在一起的味道。一些人声称公正的代码注释是好事情,而另一些人声称代码注释只是 阅读全文

posted @ 2013-12-24 13:27 codestyle 阅读(761) 评论(0) 推荐(0) 编辑

天猫程序猿高端算法找妹子
摘要:事情是这样的, 据来往的阿里小报公共账号爆料: 这是一个真实而又有些忧桑的故事,男主角是阿里巴巴西厂员工张侃。 他现在只想对姑娘说四个字: ——请-联-系-我!!! 此事见报后,阿里各界热心小二反响热烈,各路高人纷纷献言献策,想帮西厂职工张侃找到“她”。 这时,挺身而出了一位神人…… 妹子的情况比较复杂,一种可能是暂时来杭州旅游,常驻上海;一种是去上海旅游,常驻杭州; 一种是和我们的厂工相似,周末往上海跑。但是从妹子在车上的表现分析: A、如果是常坐动车的应该对温度情况有充分的了解,不会出现衣服不够导致冻着。 B、如果是从上海来杭州玩返程,会对车上温度也必然有所了解。 所以... 阅读全文

posted @ 2013-12-24 13:24 codestyle 阅读(221) 评论(0) 推荐(0) 编辑

代码度量工具——SourceMonitor的学习和使用
摘要:http://www.cnblogs.com/bangerlee/archive/2011/09/18/2178172.html引言我们提倡编写功能单一、结构清晰、接口简单的函数,因为过于复杂的函数会给我们带来很多问题:加深其他开发人员理解代码的难度;不方便测试人员对其编写测试用例;容易隐藏错误;出现问题难以定位……怎样的函数算是复杂的函数?哪些代码散发着“臭味”?除了依靠经验丰富的程序员的敏锐嗅觉,我们还可以通过工具,对我们的函数和代码进行度量。不像一位严格苛刻的代码检视人员,代码度量工具并不会板着脸对我们说:“嗯……这段代码糟糕透了!",它反馈给我们的是一组度量值(Metrics 阅读全文

posted @ 2013-12-24 13:20 codestyle 阅读(1497) 评论(0) 推荐(0) 编辑

编写你的第一个垃圾收集器
摘要:http://blog.jobbole.com/53376/每当我倍感压力以及有很多事情要做的时候,我总是有这样一种反常的反应,那就是希望做一些其他的事情来摆脱这种状况。通常情况下,这些事情都是些我能够编写并实现的独立的小程序。一天早上,我几乎要被一堆事情给整疯了——我得看一本书、处理一些工作上的事情、还要准备一场Strange Loop的演讲,然后这时我突然想到:“我该写一个垃圾收集器了”。是的,我知道那一刻让我看上去有多疯狂。不过我的神经故障却是你实现一段基础的程序语言设计的免费教程!在100行左右毫无新意的c代码中,我设法实现一个基本的标记和扫描模块。垃圾收集被认为是有更多编程牛人出没的 阅读全文

posted @ 2013-12-20 15:45 codestyle 阅读(277) 评论(0) 推荐(0) 编辑

过多if-else分支的优化
摘要:http://www.udpwork.com/item/9294.html我想谈一谈这个话题是因为我的上一篇博客在ITEye上有一些朋友回复,说if-else过多的分支可以使用switch或者责任链模式等等方式来优化。确实,这是一个小问题,不过我们还是可以整理一下这个小问题的重构方式。为什么要优化?你没有看错。这是要放在第一条谈论的。有许多人会说,叠起来一堆if-else分支,代码就不优雅了。可是,怎样去定义“优雅”的概念呢?再退一步说,即便不“优雅”,又有什么问题?对于这样一段再普通不过的代码:int code;if("Name".equals(str)) code = 阅读全文

posted @ 2013-12-20 14:35 codestyle 阅读(2486) 评论(0) 推荐(0) 编辑

史上最烂的代码
摘要:http://www.udpwork.com/item/8592.html其实本没有什么代码是“史上最烂”的,要有也只有“史上更烂”的,我想随便说说这个话题,也是源自豆瓣的一个讨论。事实上,系统复杂了被骂代码烂是一件司空见惯的事情。当然,也有一些短小的代码片段,就足以看出代码作者是个不怎么样的人。布尔类型的使用是很容易变成最烂代码的:if (isTrue()) if (isTrue()) doSomething();if(boolVal == true) { ..... }有一些毫无意义的注释:return 1; // 返回 1//如果标志为真,就返回truei... 阅读全文

posted @ 2013-12-20 14:30 codestyle 阅读(1071) 评论(0) 推荐(0) 编辑

史上最糟糕的两个变量名
摘要:http://blog.jobbole.com/18304/作为一个程序员,“起名字”是他们工作中非常重要的一部分。Phil Karlton就说过:“在计算机科学领域,有两大难题,如何验证缓存和如何给各种东西命名。”虽然很难,但是每次在写代码的时候,给事物起名字又是不可回避的工作。无论是程序变量名还是数据库表名或者是表里的列名,甚至是文件系统中的文件名,以及你的项目名称、产品名称,给这些东西起名字可不是个轻松活儿。糟糕的命名方式随处可见。你会发现,有的变量名字起得太短,根本没法提供足够的描述信息。或许有这个问题的人都做过TRS-80 BASIC程序员,在这种BASIC语言里,无论你起多长的变量 阅读全文

posted @ 2013-12-18 15:58 codestyle 阅读(349) 评论(0) 推荐(0) 编辑

如何写出无法维护的代码
摘要:http://blog.jobbole.com/23739/酷壳里有很多我觉得很不错的文章,但是访问量最大的却是那篇《6个变态的Hello World》,和它能在本站右边栏“全站热门”中出现的还有“如何加密源代码”,以及编程真难啊等这样的文章。可见本站的读者们的偏好,我也相信你们都是“身怀绝技”的程序员。所以,今天给大家推荐这篇文章,相信一定能触动大家的兴奋点。这篇文章的原文在这里(http://mindprod.com/jgloss/unmain.html),我看完后我想说——1、什么叫“创造力”,创造力就是——就算是要干一件烂事都能干得那么漂亮那么有创意的能力。2、什么叫“抓狂”,抓狂就是 阅读全文

posted @ 2013-12-18 15:55 codestyle 阅读(302) 评论(0) 推荐(0) 编辑

阅读优秀代码是提高开发人员修为的一种捷径
摘要:http://blog.jobbole.com/471/编者按:原文作者Alan Skorkin是一名软件开发人员,他在博客中分享对软件开发相关的心得,其中有很多优秀的文章,本文是其中的另一篇。Alan认为:阅读优秀代码是提高开发人员修为的一种捷径。以下是全文。我突然想起来,很多程序员都讨厌阅读代码。来吧,承认吧! 每个人都喜欢编写代码,编代码是件趣事。 另一方面,阅读代码也不容易。 不仅不容易(编注:参见《微软资深软件工程师:阅读代码不容易》),而且还非常枯燥,咱们要面对这一事实。任何不是你的代码都不怎样。(虽然我们没有说出来,但我们都是这样想的。)即便是你自己几个小时之前写的代码,也会看起 阅读全文

posted @ 2013-12-18 15:49 codestyle 阅读(238) 评论(0) 推荐(0) 编辑

防止代码变质的思考与方法
摘要:http://blog.jobbole.com/31248/1、软件长期运营存在什么问题一个大规模的客户端软件的生命周期中,我们可以把它分为两个比较粗的时期。一个是前期的搭建软件的时期,即从无到有的时期;第二个是搭建完成之后,进入的一个稳定的运营时期。第二个时期才是最关键的,在这个时期我们会持续的迭加需求,持续的优化功能,而且第二个时期也是代码在慢慢变质的时期。在这个时期,你可能会发现:我们的软件慢慢出现模块耦合严重,牵一发而动全身;每个版本都会涌现出老功能的BUG,你没动过的模块也会出BUG;或者改了一个小问题了,带出来很多其他问题;缺乏扩展性,往老模块加新功能非常痛苦;程序的崩溃率越来越高 阅读全文

posted @ 2013-12-18 14:26 codestyle 阅读(230) 评论(0) 推荐(0) 编辑

干掉你程序中的僵尸代码
摘要:http://blog.jobbole.com/30690/随着万圣节越来越流行,我感觉有必要跟大家讨论一下一个在软件开发中非常普遍的问题:僵尸代码。几乎所有我接触过的代码库里都四散着很多小段的,甚至大片大片的被注释掉的代码。这就是僵尸代码。//目前禁用这项功能。Jimmy在写这段代码时肯定是喝醉了。//你可能以为这里发生了恐怖的代码凶手案…不,不,我只是把它们注释掉了…为什么称它们为僵尸代码?你知道,僵尸不并不是真的死的。就像恐怕电影里告诉我们的,尽管僵尸看起来是死人,但它们仍有能力四处出没袭击我们。相同的道理,僵尸代码也是处于不生不死之间…它们在伺机搞砸我们的工作。注释掉的代码还活着,它们 阅读全文

posted @ 2013-12-18 14:25 codestyle 阅读(604) 评论(0) 推荐(0) 编辑

如何防止代码腐烂
摘要:http://blog.jobbole.com/5643/很多团队都有这个问题,一个项目的代码本来开始设计得好好的,一段时间以后,代码就会变得难以理解,难以维护,难以修改。为什么?我一直在思考这个问题。让我们先看一个人的情况。1.程序员的成长新手的代码新手的代码没有经验,基本不考虑代码设计,代码规模稍稍大一点则自己就乱了。进阶者的代码小规模的时候大规模的时候进阶者已经知道如何设计代码,懂得代码规则,但一般局限于一个模块。规模一大,模块间的调用就会比较混乱,难以维护。有经验者的代码有经验者的代码,模块内部代码整洁,模块之间层次清晰,有设计模式,有成熟的体系。可以保持长期的代码整洁。那么一个团队里 阅读全文

posted @ 2013-12-18 14:24 codestyle 阅读(247) 评论(0) 推荐(0) 编辑

迈出单元测试的第一步
摘要:单元测试不仅是软件行业的最佳实践,在敏捷方法的推动下,它也成为了可持续软件生产的支柱。根据最新的年度敏捷调查,70% 的参与者会对他们的代码进行单元测试。单元测试和其他敏捷实践密切相关,所以开始编写测试是组织向敏捷转型的踏脚石。道路漫长,但值得去做。我将在本文介绍符合要求的小技巧,以及在开发周期里进行单元测试的步骤。有效的单元测试默认要能自动化。没有自动化,生产力就会下降。没有自动化,单元测试的习惯也不会持续太久。依靠手工测试(由测试人员或开发人员完成)并不能持续太长时间;在有压力的情况下,没人会记得去运行所有的测试,或者去覆盖所有的场景。自动化是我们的朋友,所有的单元测试框架都支持自动化,而 阅读全文

posted @ 2013-12-18 14:21 codestyle 阅读(295) 评论(0) 推荐(0) 编辑

伯克利DB的一个BUG
摘要:一旦没有手工close掉伯克利DB,则缓存里的数据不会主动写入到文件中,因此非常难于排查这个BUG,记录在这里提醒自己 阅读全文

posted @ 2013-12-18 13:06 codestyle 阅读(234) 评论(0) 推荐(0) 编辑

当一个对象方法什么都没干时
摘要:本文作者介绍:Michael Feathers是Object Mentor International公司的技术顾问。他的工作不仅是技术开发,他还参与对世界各地技术团队进行培训、指导等工作。他曾开发了将JUnit迁移到 C++的CppUnit的初始部分,还有FitCpp——一个C++版的FIT基础测试框架。他是《Working Effectively with Legacy Code》一书的作者。Michael Feathers重构的方式千差万别。当在分析一个很大的方法时,我会首先看一下它的整体结构,心里对如何分解它有了一个初步的感觉。里面的条件判断代码块通常都会是我认为有问题、可以入手的地方 阅读全文

posted @ 2013-12-18 07:06 codestyle 阅读(395) 评论(0) 推荐(0) 编辑

CodeKata
摘要:http://codekata.pragprog.com/2007/01/code_kata_backg.html#more背景你如何成为一个伟大的音乐家?它有助于知道理论,了解仪器的机制。它有助于有才华。但最终,伟大来源于实践,运用理论一遍又一遍,使用反馈每次都变得更好。你如何成为一名全明星运动的人吗?显然,健身和人才帮助。但是,伟大的运动员,每天花几个小时,练习。但在软件行业,我们采取培训,在理论和开发商把他们直接到深底,工作的一个项目。这就像服用了一批适合孩子们,告诉他们,他们有四个季度击败红人队(嘿,我们通过管理目标,对吧? ) 。在我们的软件上做的工作我们的执业,这就是为什么我们做的 阅读全文

posted @ 2013-12-17 17:35 codestyle 阅读(1143) 评论(0) 推荐(1) 编辑

也谈 Python 的中文编码处理
摘要:最近业务中需要用 Python 写一些脚本。尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息。很快,我就遇到了异常:Python代码UnicodeEncodeError:'ascii'codeccan'tencodecharactersinposition0-3:ordinalnotinrange(128)为了解决问题,我花时间去研究了一下 Python 的字符编码处理。网上也有不少文章讲 Python 的字符编码,但是我看过一遍,觉得自己可以讲得更明白些。下面先复述一下 Python 字符串的基础,熟悉此内容的可以跳过。htt 阅读全文

posted @ 2013-12-17 10:33 codestyle 阅读(532) 评论(0) 推荐(0) 编辑

编码出错的问题
摘要:#!/bin/shrm bbbtouch bbbcat aaa | while read linedo echo $line | iconv -f utf8 -t gb2312 >> bbbdonelinux下关于编码有两个相关命令,一个是file,用于检测文件编码格式。一个是iconv命令用于将文件在两种编码格式之间转换。但是,经常会出现一个问题,就是不管怎么转,有的时候就是会报告转换失败,我一直在想这是怎么回事?一种可以说通的解释是文件的一部分已经损坏掉,所以无法进行整体转换,那么我产生一个想法,既然是部分损坏,那么我可以部分读出,部分转换,失败掉的地方就失败掉好了,我可以把大 阅读全文

posted @ 2013-12-11 14:40 codestyle 阅读(633) 评论(0) 推荐(0) 编辑

一些简单的编程练习题
摘要:http://blog.jobbole.com/53039/每当成为入门CS课程(学生们学习编程语言的课程)的助教时,都困于提出好的练习题。Project Euler和类似的问题通常对初学者来说来难了,尤其是对于那些没有很强数学背景的同学。在这篇文章中,Adrian Neumann收集了一些从初级到高级逐级困难的练习题,适合刚开始学习编程的初学者。当有新的练习题时,Adrian会及时添加。除了一些GUI问题外,练习题一般都是算法题,无需学习任何库就可以解决。课程练习题的困难程度有时候取决于你使用的编程语言。例如,关于列表List的练习题若用内部不支持List的C语言来解决的话会困难些。即使有一 阅读全文

posted @ 2013-12-10 15:05 codestyle 阅读(2003) 评论(0) 推荐(0) 编辑

敏捷开发的6个实战经验
摘要:摘要:Ulf Eriksson根据自己多年的敏捷开发经历,总结了6个实施敏捷开发的技巧:快速迭代、让测试人员和开发者参与需求讨论、编写可测试的需求文档、多沟通&尽量减少文档、做好产品原型、及早考虑测试等。在大型企业中经常是各种软件开发模式混用,一些采用敏捷开发,一些则是采用传统的瀑布式或RUP(统一软件开发过程)。敏捷开发,相对传统软件开发模式,它主要是针对快速变化的需求,不断优化管理流程,最终推出优质软件。原文作者Ulf Eriksson,是一家在线问题跟踪软件公司的创始人之一,他是敏捷开发的忠实粉丝,已经进行了多年敏捷开发的实践。下面内容主要是作者根据自己多年经历进行的经验总结。1 阅读全文

posted @ 2013-12-09 17:24 codestyle 阅读(620) 评论(0) 推荐(0) 编辑

HTML5
摘要:HTML5拥有一些非常棒的特性,其中就包括了websockets。这个标准非常容易识别,你可以从ws://和wss://(安全的websockets URL)前缀中分辨出来,这样就可以启动“服务端的事件推送”。如果大家深入的了解一下的话,这里有一些非常有趣的内容。如果你深入学习HTML5,你绝对应该尝试一下websockets!在个人看来,这是最酷的HTML5技术。在大家正式开始了解HTML5的websocket之前,让我们了解一下:WebSockets的9大杀手级功能websocket启动了服务器端web应用双向交流处理的功能(这里查看API)。典型的应用如下:聊天应用(API)多人游戏,例 阅读全文

posted @ 2013-12-09 15:55 codestyle 阅读(379) 评论(0) 推荐(0) 编辑

Selenium IDE测试
摘要:判断WEB程序是否能打开页面,并且打开了正确的页面,可以通过assertTitle和assertLocation进行判断并且这些操作不需要提供value.target就是期望的URL和页面标题,因为command本身就已经说明了希望比对的页面元素是什么一旦没有通过assert的断言,则程序执行将停下来 ,info列表显示红色文字 阅读全文

posted @ 2013-12-09 14:09 codestyle 阅读(133) 评论(0) 推荐(0) 编辑

递归目录的shell脚本
摘要:#! /bin/sh# 在其他目录运行时一定要加上这样的语句# 尤其是配置在crontab里自动运行cd `dirname $0` #定义数据别名alias statdb="/usr/local/mysql -h ... -uppstat -p... statdb"# 递归访问目录# 如果文件名中包含指定日期# 则将文件当作SQL脚本入库function show(){ for i in $1/* # 因为博客园的代码插件有BUG,为了显示效果追加*/ do if [ -d $i ]; then ... 阅读全文

posted @ 2013-12-09 11:53 codestyle 阅读(390) 评论(0) 推荐(0) 编辑

测试覆盖(率)到底有什么用?
摘要:http://www.infoq.com/cn/articles/test-coverage-rate-role引言经常有人问我这样的问题:“我们在做单元测试,那测试覆盖率要到多少才行?”。而我的答案很简单,“作为指标的测试覆盖率都是没有用处的。”Martin Fowler(重构那本书的作者)曾经写过一篇博客来讨论这个问题,他指出:把测试覆盖作为质量目标没有任何意义,而我们应该把它作为一种发现未被测试覆盖的代码的手段。http://martinfowler.com/bliki/TestCoverage.htmlBrian Marick(敏捷宣言最早的17个签署人之一)也说过,作为一名程序员,我 阅读全文

posted @ 2013-12-06 17:50 codestyle 阅读(1162) 评论(0) 推荐(0) 编辑

重构遗留程序的一次案例学习(java程序)
摘要:遗留代码经常是腐臭的,每个优秀的开发者都想把它重构。而进行重构的一个理想的先决条件是,它应该包含一组单元测试用例,以避免产生回归缺陷。但是为遗留代码编写单元测试可不是件容易的事,因为它经常是一团糟。要想为遗留代码编写有效的单元测试,你大概得先把它重构一下。但要重构它,你又需要单元测试来确保你没有破坏任何功能。这种状况相当于要回答是先有鸡还是先有蛋。这篇文章通过分享一个我曾参与过的真实案例,描述了一种可以安全地重构遗留代码的方法。问题描述在这篇文章中,我将用一个真实案例来描述测试与重构遗留系统的有效实践。这个例子的代码由Java编写,不过这个实践对其它语言也是适用的。我将原始场景稍做了些改动以免 阅读全文

posted @ 2013-12-06 10:01 codestyle 阅读(1267) 评论(0) 推荐(0) 编辑

rsync学习
摘要:echo "aabb" > pswdchmod 600 pswdrsync -Cvaz assert.awk stat@59.151.37.17::stat/read/aabb/assert.awk --password-file=pswd 阅读全文

posted @ 2013-12-05 17:54 codestyle 阅读(198) 评论(0) 推荐(0) 编辑

一次awk脚本的重构
摘要:# 脚本功能说明: # 1. 检查URL中的域名是否是指定版本的域名# 2. 对访问bid,authorid的游客身份排重,并累加其pv# 全局变量说明# DOMIAN_LIST 是数组,key是要统计的域名value是域名所属的业务# 函数参数说明:# domain 从URL里提取出来的域名# ver 域名属于哪个业务(wap or touch)# statid 从URL里提取的出来的bookid或者authorid# array 用于排重的并累加PV的数组function compute(domain, ver, statid, userid, array __ARGVEND__)... 阅读全文

posted @ 2013-12-03 17:16 codestyle 阅读(271) 评论(0) 推荐(0) 编辑

哪本书是对程序员最有影响、每个程序员都该阅读的书?
摘要:http://www.aqee.net/what-is-the-single-most-influential-book-every-programmer-should-read/国外知名网站stackoverflow上有一个问题调查:哪本书是对程序员最有影响、每个程序员都该阅读的书?,这个调查已历时两年,目前为止吸引了153,432人访问,读者共推荐出了478本书(还在增加),其中最火的一本书《Code Complete》被顶了1306次。如果你是个程序员,你一定有兴趣看看这些书里你都看过几本,如果你一本没看过的话,我也不好说什么,也许你是个天才,但我相信大多数人都知道,你在学校里根本学不到 阅读全文

posted @ 2013-12-02 11:38 codestyle 阅读(236) 评论(0) 推荐(0) 编辑

我的阅读编程书籍的好方法
摘要:http://www.aqee.net/how-i-read-programming-books/我是学电子工程毕业的,在这个专业里我必须要用的编程语言只有C/C++,汇编和Matlab。在参加了一个创业周末的活动后,我开始对软件开发、计算机编程感兴趣,我决定要试一试,要进入这个领域。我发现,要想做一些编程项目,你需要去学一些完全不同的编程语言。在过去的一年半里,我学会了Java(用于开发Android),Python和Javascript(& HTML/CSS)(用于web开发),我慢慢认识到,这最好的从书本和教材上学习编程的方法是把它们读3遍!!用这种方式学习新的内容能更好的帮你理 阅读全文

posted @ 2013-12-02 11:36 codestyle 阅读(205) 评论(0) 推荐(0) 编辑

领域驱动设计和实践
摘要:http://kb.cnblogs.com/page/112298/作者: 池建强来源: InfoQ发布时间: 2013-12-01 13:03阅读: 2892 次推荐: 7原文链接[收藏]摘要:本文主要介绍了领域驱动设计的基本概念、要素、特点,对比了事务脚本和领域模型的特点,最后介绍了我们在软件开发过程中的领域驱动设计实践。 引言 软件系统面向对象的设计思想可谓历史悠久,20世纪70年代的Smalltalk可以说是面向对象语言的经典,直到今天我们依然将这门语言视为面向对象语言的基础。随着编程语言和技术的发展,各种语言特性层出不穷,面向对象是大部分语言的一个基本特性,像C++、Java、C.. 阅读全文

posted @ 2013-12-02 11:04 codestyle 阅读(304) 评论(0) 推荐(0) 编辑

不要if else的编程
摘要:http://news.cnblogs.com/n/194216/ 英文原文:Unconditional Programming]本文作者介绍Michael FeathersMichael Feathers 是 Object Mentor International 公司的技术顾问。他的工作不仅是技术开发,他还参与对世界各地技术团队进行培训、指导等工作。他曾开发了将 JUnit 迁移到 C++ 的 CppUnit 的初始部分,还有 FitCpp——一个 C++ 版的 FIT 基础测试框架。他是《Working Effectively with Legacy Code》一书的作者。 条件控制.. 阅读全文

posted @ 2013-12-02 10:56 codestyle 阅读(446) 评论(0) 推荐(0) 编辑

编码规范的要点
摘要:命名恰当的名字,无论多么怎么强调都不过分注释还是必须有啊!行数函数的行数,类的行数,乃至与一个源文件的代码行数都必须恰当,存在一个不宜过大的值和过小的值个数变量个数,参数个数,函数个数,属性个数嵌套层数语句的层数我认为2层是最佳,即for(;;){if(expr){dosomething}}日志日志是了解程序运行状态的最重要工具,以及性能调优的最重要的依据我现在觉得,一般来说名字都应该长一点,不过用于循环的迭代器时允许短一点:int i;for(i=0; i name); }但是这样行不行呢?foreach (i in productList){ Console.writeLin... 阅读全文

posted @ 2013-12-02 10:37 codestyle 阅读(340) 评论(0) 推荐(0) 编辑

最牛B的编码套路
摘要:http://blog.csdn.net/happydeer/article/details/17023229最近,我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”(练习编程),写成于2005年,读后令我惊讶不已:与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。我认识很多杰出的程序员——这是在亚马逊工作最好的额外“福利”之一。如果仔细观察他们,你会发现他们时时都在锻炼。他们已经很优秀了,但他们仍然 阅读全文

posted @ 2013-12-02 10:17 codestyle 阅读(216) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示