过多if-else分支的优化

过多if else分支的优化 我想谈一谈这个话题是因为我的上一篇博客在ITEye上有一些朋友回复,说if-else过多的分支可以使用switch或者责任链模式等等方式来优化。确实,这是一个小问题,不过我们还是可以整理一下这个小问题的重构方式。

为什么要优化?

你没有看错。这是要放在第一条谈论的。

有许多人会说,叠起来一堆if-else分支,代码就不优雅了。可是,怎样去定义“优雅”的概念呢?再退一步说,即便不“优雅”,又有什么

[......]阅读全文

分享到:

代码洁癖症的表现

代码洁癖症的表现 有下列情形之一的,你患上了代码洁癖症。症状程度可轻可重,轻者帮助写出优雅整洁的代码,重者走火入魔,万劫不复。

  1. 多余的空行、分号,没有使用的变量,见一个删一个。
  2. tab或者空格没有对齐的必须纠正过来,除了缩进用,不允许看到代码内连续两个空格。
  3. 看到一个类某个方法没有注释,不由自主地加上,不管有没有意义。
  4. 错误的拼写,无论是在命名还是注释必须纠正过来;不一致的大小写,必须要纠正过来;标点符号的遗漏

[......]阅读全文

分享到:

吐槽一下新浪微博网页版的UI设计

1. 不一致的按钮。有向下箭头是鼠标悬停的时候显示下拉菜单吧:

吐槽一下新浪微博网页版的UI设计

可是,右侧这样的普通按钮也会有悬停+显示下拉菜单的效果:

吐槽一下新浪微博网页版的UI设计

继续,新浪微博没有把这样的效果统一贯彻到底,发微博的按钮就容易误导用户悬停然后等待下拉菜单,结果怎么也等不来:

吐槽一下新浪微博网页版的UI设计

 

2. 右侧这样的tab页是鼠标悬停激活切换的:

吐槽一下新浪微博网页版的UI设计

但是到了正中的tab页,需要鼠标单击切换:

吐槽一下新浪微博网页版的UI设计

 

3. 按钮风格太多

[......]阅读全文

分享到:

数据库范式总结

数据库范式总结 数据库表结构设计时,遵从一定的范式(NF,Normal Form)可以减少数据冗余和操作异常。

第一范式(1NF)

1NF指的是每个属性值都是不可再分的。

满足1NF的关系被称为规范化的关系,1NF也是关系模式应具备的最起码的条件。

比如有这样一张表user的两列:

  • name
  • phone_number

phone_number这一列只存储一个电话号码,如果一条数据同时存

[......]阅读全文

分享到:

关于方校长一条微博的陈述

谈论这个话题仅仅是因为最近北邮方校长的一条微博,引来了两万多条转发。在此我想谈论一些事实,给并且不做太多主观评定;我也想援引一些资源链接(大部分援引自维基百科),帮助不了解情况的人明白其中发生了什么:

关于方校长一条微博的陈述

其实,微博的内容已经不重要了,欢乐的是转发里的评论记录,当然,新浪“适时”地把查看转发的功能给关闭了:

关于方校长一条微博的陈述 

但是,依然可以从手机客户端上看到很多转发的记录:

关于方校长一条微博的陈述

还有这两张截图:

关于方校长一条微博的陈述 关于方校长一条微博的陈述

[......]阅读全文

分享到:

梅森素数

梅森素数 古希腊数学家欧几里德就已证明素数有无穷多个,并提出一些素数可写成“2P-1”(其中指数P也是素数)的形式,其中17世纪法国数学家、法兰西科学院奠基人马林·梅森(Martin Mersenne)是其中成果较为卓著的一位,因此数学界将“2P-1”型的素数称为“梅森素数”。

1772年,欧拉在双目失明的情况下,靠心算证明了231-1(即2147483647)是第8个梅森素数,这个记录一百多年内都没有人

[......]阅读全文

分享到:

进阶过程:程序员做项目的独立性

进阶过程:程序员做项目的独立性 第一阶段:编码机器

这是最低级的阶段,程序员拿到详细设计文档,上面连许多方法接口都定义好了。重构一些代码,写一些实现,调用一些既定的API,然后花许多时间在各种各样的场景测试上面。从做的工作上看,这都不能算程序员,最多,只是编码技巧卓越的码农而已。因为它几乎扼杀了一切创造力,但是这很常见,比如在一些对日外包公司,就是如此。

第二阶段:独立的实现者

程序员得到的只是粗略的设计文档,也许注明了外部接

[......]阅读全文

分享到:

兴趣的力量

兴趣的力量 一月底我就到家了,休假准备过春节。正好有闲暇的时间可以来思考许多事情。我去理发的时候,理发师和我热烈地聊起来。她说她的孩子在读高一,文科成绩比理科好多了,文理分科的时候,孩子很有主见,执着地要选择理科;但是父母觉得他更适合学文。我和理发师说,就怕没有想法。既然孩子那么有主见,有那么强烈的倾向,这是一件好事,你不妨听听他的想法,为什么不支持他?退一步说,就算他在文科方面更具备天赋,现在你干涉了他坚

[......]阅读全文

分享到:

几种华丽无比的开发方式

几种华丽无比的开发方式 不要被我的标题骗了。我可不是来宣扬什么模型驱动开发,或者什么测试驱动开发的,那些都弱爆了。今天我要说的,是几种看起来激动人心、华丽无比,但是可以让程序员们痛苦不堪的开发方式,特别适合那些热衷于折磨虐待程序员的项目经理和产品经理们。当然,掌握以后,偷偷用就好了,请不要来感谢我。

 

进度驱动开发(SDD,Schedule Driven Development)

这是在国内最为流行的开发方

[......]阅读全文

分享到:

程序员,都去写一写前端代码吧

程序员,都去写一写前端代码吧 你可以认为我是一个极端的人,就像有许多人专注于自己的领域而不屑于其它“肤浅”的工作范畴一样。比如我见过不少认为做portal没有技术含量的判定,做工程都是充满苦逼行为的言论,最近则还有那些“大数据”崇拜者的疯狂吐槽……我的极端则有些不同,我的极端在于我认为绝大多数优秀的程序员,都要尝试多方面的事情。并不只有底层开发或者机

[......]阅读全文

分享到:

51CTO的访谈

51CTO的访谈 这篇51CTO对我的访谈是关于找工作过程相关的体会,文章有过整理改动。无论从年纪还是从资历来说,其实我并不能算是一个很有资格的受访者。当然,我还是希望可以帮到那些软件行业涉足未深和忙于找工作的朋友。邮件对话最终整理成51CTO的这篇文章

[51CTO]:面试中较为偏重的一方面就是询问经历这一环节,您觉得,哪些工作经历或是学习经历可以给面试者的印象“加分”。

[四火]:首先, 我认为经历不能

[......]阅读全文

分享到:

用JavaScript截图

用JavaScript截图 使用JavaScript截图,这里我要推荐两款开源组件:一个是Canvas2Image,它可以将Canvas绘图编程PNG/JPEG/BMP的图像;但是光有它还不够,我们需要给任意DOM(至少是绝大部分)截图,这就需要html2canvas,它可以将DOM对象转换成一个canvas对象。两者的功能结合起来,就可以把页面上的DOM截图成PNG或者JPEG图像了,很酷。

Canvas2Image

[......]阅读全文

分享到:

Bootstrap: New Net-volution

Bootstrap: New Net volution A lot of companies developed their own mature front-end components or frameworks since several years ago, while only two twitters made it popular all around the world. Just think of it why. I don'

[......]阅读全文

分享到:

2012年回顾和2013年计划

2012年回顾和2013年计划 2012年,我来到北京Amazon工作,接受互联网的新挑战,感受不一样的企业文化。在这个过程中,长了一些见识,结识了一大帮人,有一部分观念发生了改变。

  1. 终于得以进入互联网行业,同时,能够在北京这个软件氛围浓厚的大城市工作,增长见识。而且,学到了一些新技术,这也是我当初选择新挑战的一个原因。
  2. 从民企到外企,两家企业文化鲜明的公司,两种特异的文化风格,给我带来认识上和眼界上的冲击是巨大的。在其中,

[......]阅读全文

分享到:

多面手程序员

多面手程序员 先来看看这样的场景:

  • “没有美工做的高保真页面,我怎么来开发呢?我没有审美,也不会用PS作图啊。”
  • “正交测试这种技巧,是测试工程师应该掌握的,开发不需要了解。”
  • “目前进度的瓶颈在产品经理那里,他还没有给我澄清需求。难道要一个写代码的去给客户整理需求么?”
  • “我是C++程序员,我是做底层开发的啊,这种页面样式的问题我怎么可能懂?”
  • “这是维优人员关注的线上数据,他应该把日志、错误现象全部备齐

[......]阅读全文

分享到:

JQuery表格插件介绍:Flexigrid和DataTables

JQuery表格插件介绍:Flexigrid和DataTables JQuery的表格插件有很多。FlexigridDataTables是我最近使用的,并且功能比较强大,在这里介绍一下。如果你在寻找前端绘制表格的插件,可以考虑它们。

Flexigrid

官方Flexigrid的特性展示:

  • 列宽度可拖拽调整
  • 高度和宽度可拖拽调整
  • 列头可排序
  • 主题支持
  • 支持XML/JSON格式的Ajax数据源
  • 支持分页
  • 可以显示/隐藏列
  • 表格搜索功能
  • JavaScript AP

[......]阅读全文

分享到:

Flot介绍

Flot介绍 最近在项目里面要用到JavaScript来绘制图表,JQuery的插件Flot是一个不错的选择。和我之前介绍过的D3不同,它的唯一目的就是用来绘制曲线图的,即便是它的不同插件的功能,也基本上都在这个范畴之内。

Flot采用Canvas绘制图形(Web总共就有三种常见方式来绘制图形,不了解的同学请看这篇文章),在数据量非常大的时候,你需要考虑浏览器端的性能问题。顺便提一句,D3是采用SVG来绘制图

[......]阅读全文

分享到:

我眼中的工程师文化

我眼中的工程师文化 现在HR和猎头也懂得,挖程序员不能光讲钱和项目了,多少号称工程师文化的公司花开北京上海,可是到底什么是“工程师文化”?谁能给一个准确的定义?

有人说,什么文化就是什么说了算的意思,工程师文化就是工程师说了算。这未免也太肤浅了。也有人说,工程师文化就是自由上下班、松散管理,做喜欢的项目。我想这依然是不恰当的,这些人只说出了工程师文化给工程师带来的权利,更何况这种对权利的认

[......]阅读全文

分享到:

Java的日期API真烂

Java的日期API真烂 记得在我刚学Java的时候,真是搞不清楚Date和Calendar这两个类,后来我渐渐知道,原来不能全怪我啊,Java日期API之烂是公认的(不妨参见这篇文章,Tiago Fernandez做过一个投票,就是要选举最烂的Java API,结果Java日期API排行第二,仅次于臭名远扬的EJB2,嘿嘿)。

蛋疼的java.sql.Date

只有Date和Calendar搞定一切吗?那还好啊。当

[......]阅读全文

分享到:

观点的碰撞

观点的碰撞 几周前我写了一篇文章,《对几个软件开发传统观点的质疑和反驳》,微博上、独立域名的博客上,还有ITEye网站上,都有一些评论的朋友给了我许多事实和观点。我觉得这些评论,似乎都有理由,无所谓对错,这些是有价值和有意义的文字。相较于那些“顶”、“支持”、“SB”、“沙发”……纯灌

[......]阅读全文

分享到:

Preview on Feedage: