这个repository是存放我写过的java算法。 所有算法都来自《算法》第四版与其网站。 也会在这里写写心得体会什么的。 #2016-01-03 又有十天没在这里提交过代码了,我都不知道我为什么会这样子。 这本书用了四十年的时候编写,四十年,那你为什么不认真一点,把所有的习题都做一次? 那么急干嘛? #2016-01-11 新的一年,从查找开始。 note 2016.01.19 一个很烂的项目,发现以下问题: 1. 一半的bean用spring管理,另一半的bean自己new或者用单例模式,spring的包扫描配错了,但两年时间一直没人改过来 2.到处都是静态类、静态方法,没法扩展 3.在低基数、低频率的搜索上写优化算法,算法和业务逻辑搅在一起,没有分开为2个层面 4.业务配置文件过于复杂,过度设计,居然是事件模式解析 5.自己写了个Dao,自己手动管理事务,到处拼sql,六七十个字段的表,每个操作都重复拼 6.4000行的大jsp、大类、800行的大方法、多达17个参数的方法,喜欢写万能函数 7.不写注释、不写文档 8.log4j和logbak混用,各占一半 9.混杂的代码风格,花括号行尾、换行都有,缩进用tab、2空格、4空格、8空格,紧凑风格和松散风格都有 10.一些作者喜欢用反射调代码,没办法用ide跟踪 11.很多作者不用开源工具包,喜欢自己搞一套,有炫技嫌疑,实际上搞得很烂 12.分包分得一团糟,既想按照功能分,又想按照业务分,没有把握好,稀里糊涂的 13.方法、变量命名词不达意,经常在getXXX、isXXX的方法里改传入参数,但又反回值,从命名就能看出作者词汇量狭窄、思维局限 14.对spring、spring mvc了解和利用严重不够,框架支持得很好的功能,非要自己写 15.pom依赖关系一团糟,各种重复引包、重复依赖,httpclient竟然多达4个版本 16.大片的被注掉的代码留在项目里,到处都是,许多废弃的类和废弃的配置文件没有删掉 17.每个作者都喜欢自己搞一套,缺乏共识,各自为战,各种约定、各玩各的 18.该打日志的地方没有打,导致一些工单成了无头案,有些地方,又重复打日志,啰里啰嗦 19.到处都是HashMap,而不用java bean;1个HttpServletRequest调了五六层方法;自己手工拼json字符串;拼email的html body,不用模板 20.页面还是jsp,jsp里写了大量的业务逻辑,甚至通过httpclient去抓别的项目,抓回来内容嵌在当前页面里 21.到处都是main方法,不用单元测试 22.代码重复度很高,一段逻辑,到处复制粘贴 23.数据库表设计很烂,导致不好查(比如用逗号分隔的串),较老得表甚至毫无注释(生产环境) 24.整个团队都没有代码质量追求,习惯了烂代码 这个项目,是该公司交易系统的核心,每周大概4次发布,迭代速度很高。 往里面加逻辑异常困难、很容易出问题,开发和QA都心力交瘁,新逻辑都是hack进去的,会加重代码腐烂。 若要重构,可能要同时维护2个版本,而且重构风险很大,一旦出事,将影响TL的前途。 如何摆脱这个困境? #2016-01-28 股票继续大跌,再次经历去年七月份时的恐慌.只是这次,我手上已经没有能逆转的牌可打了. 好像霸王项羽.时不利兮骓不逝,虞兮虞兮奈若何? 于是我想收回借给朋友的钱,虽然不多,但是还能最后一战. #2016-02-18 I am so afraid that my nose keep bleeding. So quit smoking, OK? I am serious this time, no more cigarrates.