`
鳄鱼旭
  • 浏览: 74674 次
文章分类
社区版块
存档分类
最新评论
文章列表
重复的代码在软件开发过程中是会带来很大隐患的东东,尤其是当重复的代码发生变更时,很多莫名其妙的Bug就随之而来。我做面试官的时候曾经问过应聘者:去除重复代码有哪些种方法?有些人回答很简单,抽取出来一个函数,把重复代码移动进去。事实上真的是这样么?   本文试图阐述几个问题?A)去除重复代码在软件结构中的意义;B)列举代码去重过程中的一些方法,但只是抛砖引玉的作用,并不能完全枚举出来;C)讨论一些特殊的情况下,适当地忍受一些重复逻辑的存在;   首先,什么是重复代码?我是这样定义的:重复代码指的是那些相同、或者相近(完成的业务逻辑相近)的代码。产生的根源根源有如下几种情况:     ...
在我看来,一门学科的发展基础有两类:以数学为基础或者以哲学理论为基础。   以数学为基础的学科,发展非常之快。因为其建立在严谨的推理基础之上的,一般情况下,是就是是,不是就是不是,很少出现似是而非的情况 ...
”智者行之,愚者佩之“,是《皇帝内经》里面的一句话,原意是对于人的活动需要合乎天道(法于阴阳、和于术数)。智者按照这个方式去做,而愚者知道这样做是好的,合理的,但只是挂在嘴边上(佩服:佩字所指为外在,服所指为内在(服在文言文里面指的是内衣)),宣扬这样是好的云云,但实际上从来不按照这个方式去做。   我很喜欢这句话,很有内涵,我们在检讨自己的时候会发现,其实大多数情况下我们都在扮演”愚者佩之“的角色。   程序员:有些人看过很多书,长篇大论的去讲,这些人面试的时候非常有优势(因为博学),但是实际上真正在做项目的时候很少应用这些理论。   程序员:我面试过一些程序员,设计模式知道的不 ...
最近在分析现有代码,将一部分逻辑抽取出来做服务化,分析的时候才发现里面有很多“坑”。在对相关负责人访谈的时候,发现绝大多数程序员都有这样的习惯: 面对一个新的需求,通常的做法是完全沿用现有的设计,完全 ...
1、Scala语言的地位        Scala是JVM系的语言(Clojure、Groovy、Scala、JRuby等属于这一类),这类语言的特点是将语言编译成为Java Bytecode后由JVM解释执行,这样做的原因是:         . 对于Java程序员来说,转换比较容易,以前学到的知识实际上都可以利用起来(因为这类语言调用Java库实际上是没有障碍的);         .对于那些对Java的语法不满的程序员来说,可以充分发挥(比如函数式语言的特性:尽管Java8已经增加了对函数式语言的部分支持,但是个人觉得和Scala、Groovy等还有一定的差距);         ...
总评: 《人月神话》作者Brooks写的书《设计原本》,觉得做架构师或者做设计工作的同学们都看看,真的很好,里面将设计提升为方法学、哲学的高度,而不是单纯讲案例、讲准则。当然个人认为有些内容是和设计本身没有太大的关联,可能和作者的工作内容有关而呈现出来的,但绝对值得一读:   印象比较深刻的论断:   。关于完整性:同一个系统的架构实际上不应该有多个架构师同时设计(每个人一部分),至少要有一个架构师负责统筹,才能保证完整性。比如头脑风暴的方式实际上并不合适运用在设计方案的选择上;   。Raymond的集市模型:即当前Linux社区采用的模式,每个人都可以对系统进行贡献,贡献内容 ...
一直没看到基于弱引用(java.lang.ref.WeakReference)的合适的例子,直到阅读Lucene-core的代码,发现了这么一段:     public class CloseableThreadLocal<T> implements Closeable { private ThreadLocal<WeakReference<T>> t = new ThreadLocal<WeakReference<T>>(); // Use a WeakHashMap so that if a Thread ...
写点比较初级的东东:   最近工作需要,研究搜索相关的内容,下面是搭建Solr4.5的一些心得,属于QuickStart类型的。 环境:       Tomcat6.x + Windows        Solr4.5(binary)   实际上网上的启动描述的也比较多,但是不知道为什么4.5还是有问题: 官方关于如何启动第一个实例的描述(Solr+Tomcat): .  http://wiki.apache.org/solr/SolrTomcat . https://cwiki.apache.org/confluence/display/solr/Running+Solr ...
偶然间看到了《程序员应该知道的97件事》这本书,并不是什么新书(只是我之前没有看过而已),不过里面写的内容还是不错的,简单有效,阅读起来颇有共鸣。奇怪的是中文版网上已经很难买到了,下载了英文版阅读了下, ...
MyBatis Generator,由于其不支持分页,所以就想写一个针对MySQL可以生成支持分页代码的Plugin,在网上找到了一个http://blog.csdn.net/firecoder/article/details/6069434,运行了一下发现有Example类是把属性都加上去了,但是Provider相关的代码并没有生成,仔细看了下这个实现,发现原因是这个实现只针对XML方式的SQLMAP处理函数做了重写(加入分页相关的内容),而在我的应用里面用的是注解的方式使用的MyBatis。 所以我在这个基础上做了些修改: 1)增加对Provider代码生成情况下分页的支持; 2)增加 ...
全部文档索引: Otter源代码解析(一): http://eyuxu.iteye.com/blog/1941894 Otter源代码解析(二) : http://eyuxu.iteye.com/blog/1942518 Otter源代码解析(三): http://eyuxu.iteye.com/blog/1942519 Otter源代码解析(四): http://eyuxu.iteye.com/blog/194 ...
全部文档索引: Otter源代码解析(一): http://eyuxu.iteye.com/blog/1941894 Otter源代码解析(二) : http://eyuxu.iteye.com/blog/1942518 Otter源代码解析(三): http://eyuxu.iteye.com/blog/1942519 Otter源代码解析(四): http://eyuxu.iteye.com/blog/194 ...
全部文档索引: Otter源代码解析(一): http://eyuxu.iteye.com/blog/1941894 Otter源代码解析(二) : http://eyuxu.iteye.com/blog/1942518 Otter源代码解析(三): http://eyuxu.iteye.com/blog/1942519 Otter源代码解析(四): http://eyuxu.iteye.com/blog/194 ...
全部文档索引: Otter源代码解析(一): http://eyuxu.iteye.com/blog/1941894 Otter源代码解析(二) : http://eyuxu.iteye.com/blog/1942518 Otter源代码解析(三): http://eyuxu.iteye.com/blog/1942519 Otter源代码解析(四): http://eyuxu.iteye.com/blog/194 ...
全部文档索引: Otter源代码解析(一): http://eyuxu.iteye.com/blog/1941894 Otter源代码解析(二) : http://eyuxu.iteye.com/blog/1942518 Otter源代码解析(三): http://eyuxu.iteye.com/blog/1942519 Otter源代码解析(四): http://eyuxu.iteye.com/blog/194 ...
Global site tag (gtag.js) - Google Analytics