<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>王辉的博客</title>
	
	<link>http://www.hui-wang.info</link>
	<description>少则得，多则惑</description>
	<lastBuildDate>Thu, 17 May 2012 20:27:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/hui-wang/feed" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="hui-wang/feed" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>不必要的程序员</title>
		<link>http://www.hui-wang.info/2012/05/17/%e4%b8%8d%e5%bf%85%e8%a6%81%e7%9a%84%e7%a8%8b%e5%ba%8f%e5%91%98/</link>
		<comments>http://www.hui-wang.info/2012/05/17/%e4%b8%8d%e5%bf%85%e8%a6%81%e7%9a%84%e7%a8%8b%e5%ba%8f%e5%91%98/#comments</comments>
		<pubDate>Thu, 17 May 2012 20:27:41 +0000</pubDate>
		<dc:creator>王辉</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[程序员]]></category>

		<guid isPermaLink="false">http://www.hui-wang.info/?p=2753</guid>
		<description><![CDATA[程序员的主要任务是让自己成为一个不必要的人。这听起来相当愚蠢，仿佛工作的目的就是要把工作给慢慢作丢了。其实不然，一个不必要的程序员才是一个优秀的程序员。 这话越听越自相矛盾了，但如果理解了不必要的意思，便一切都明朗了。必要与不必要是从代码与代码的维护这一层面讲的。一个优秀的程序员写的代码应该是一目了然，具有自我解释能力的。别人读着赏心悦目的代码，就像聆听作者讲故事一样，只要代码在，作者的存在与否就无关紧要了。 可从人才的角度出发，这个不必要的人是多么的难能可贵。每写一段代码，他都在讲一段故事，这如何能让人不沉醉。]]></description>
			<content:encoded><![CDATA[<p>程序员的主要任务是让自己成为一个不必要的人。这听起来相当愚蠢，仿佛工作的目的就是要把工作给慢慢作丢了。其实不然，一个不必要的程序员才是一个优秀的程序员。</p>
<p>这话越听越自相矛盾了，但如果理解了不必要的意思，便一切都明朗了。必要与不必要是从代码与代码的维护这一层面讲的。一个优秀的程序员写的代码应该是一目了然，具有自我解释能力的。别人读着赏心悦目的代码，就像聆听作者讲故事一样，只要代码在，作者的存在与否就无关紧要了。</p>
<p>可从人才的角度出发，这个不必要的人是多么的难能可贵。每写一段代码，他都在讲一段故事，这如何能让人不沉醉。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hui-wang.info/2012/05/17/%e4%b8%8d%e5%bf%85%e8%a6%81%e7%9a%84%e7%a8%8b%e5%ba%8f%e5%91%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>代码洁癖</title>
		<link>http://www.hui-wang.info/2012/05/04/%e4%bb%a3%e7%a0%81%e6%b4%81%e7%99%96/</link>
		<comments>http://www.hui-wang.info/2012/05/04/%e4%bb%a3%e7%a0%81%e6%b4%81%e7%99%96/#comments</comments>
		<pubDate>Fri, 04 May 2012 18:20:58 +0000</pubDate>
		<dc:creator>王辉</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[简洁]]></category>

		<guid isPermaLink="false">http://www.hui-wang.info/?p=2742</guid>
		<description><![CDATA[我也有洁癖，虽然我是一个不拘小节，有些大大咧咧的人。而不干净不整齐的代码常常让我郁郁寡欢。自己范的错误自我纠正即可，可他人如果没有这个追求，我该如何是好？ 敢于做批评和自我批评固然是一种优秀品质，但这并不意味着要以融洽的同志关系当做牺牲品来换取。当敏锐的直觉告诉我，此处代码有污迹的时候，与其快刀斩乱麻似的急于重构，倒不如先安下心来仔细的分析一番，为何代码没有带来美的享受。 这样做有不少好处。一是有助于深刻的理解问题的根源所在。特别是读别人的代码的时候，即便找不到合适的方式与他人沟通，至少自己明白问题的症结之后，从别人的代码中吸取宝贵的教训，也能保证自己不犯类似的错误。其次，静心思考，也是给接下来的沟通和辩论收集论据。己所不欲，勿施于人，自己都没搞明白的东西何必强行的去要求别人呢。倘若是由于论据不足而导致说服不了别人，恐怕以后再发言的时候，听众便要不以为然了。 说到这，顺带着讲一下我遇到的不简洁代码。 一是关于对象继承的问题。众所周知，对象继承有利于代码的重用。但并非任何行为都可以通过继承来实现重用。继承应遵守的最重要的原则便是Liskov代换原则。在任何环境下，一个子类总可以代换它的父类。意思是说老子能用的地方，换成是儿子，儿子也能完成所有的任务。若此原则不能遵守，请用组合而非继承。 其次便是DRY(Dont repeat yourself)原则，史上最重要的编程原则，永远不要写重复代码。重复代码是一个梦魇，不仅不利于维护而且不利于代码重用。究其原因，是只看到了问题的表面，而不得其实质。解决方法便是提升抽象的层面。 代码洁癖并无好坏之说，觅得问题的实质，以容易让人接受的方式传达有效的信息才是关键。]]></description>
			<content:encoded><![CDATA[<p>我也有洁癖，虽然我是一个不拘小节，有些大大咧咧的人。而不干净不整齐的代码常常让我郁郁寡欢。自己范的错误自我纠正即可，可他人如果没有这个追求，我该如何是好？</p>
<p>敢于做批评和自我批评固然是一种优秀品质，但这并不意味着要以融洽的同志关系当做牺牲品来换取。当敏锐的直觉告诉我，此处代码有污迹的时候，与其快刀斩乱麻似的急于重构，倒不如先安下心来仔细的分析一番，为何代码没有带来美的享受。</p>
<p>这样做有不少好处。一是有助于深刻的理解问题的根源所在。特别是读别人的代码的时候，即便找不到合适的方式与他人沟通，至少自己明白问题的症结之后，从别人的代码中吸取宝贵的教训，也能保证自己不犯类似的错误。其次，静心思考，也是给接下来的沟通和辩论收集论据。己所不欲，勿施于人，自己都没搞明白的东西何必强行的去要求别人呢。倘若是由于论据不足而导致说服不了别人，恐怕以后再发言的时候，听众便要不以为然了。</p>
<p>说到这，顺带着讲一下我遇到的不简洁代码。</p>
<p>一是关于对象继承的问题。众所周知，对象继承有利于代码的重用。但并非任何行为都可以通过继承来实现重用。继承应遵守的最重要的原则便是Liskov代换原则。在任何环境下，一个子类总可以代换它的父类。意思是说老子能用的地方，换成是儿子，儿子也能完成所有的任务。若此原则不能遵守，请用组合而非继承。</p>
<p>其次便是DRY(Dont repeat yourself)原则，史上最重要的编程原则，永远不要写重复代码。重复代码是一个梦魇，不仅不利于维护而且不利于代码重用。究其原因，是只看到了问题的表面，而不得其实质。解决方法便是提升抽象的层面。</p>
<p>代码洁癖并无好坏之说，觅得问题的实质，以容易让人接受的方式传达有效的信息才是关键。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hui-wang.info/2012/05/04/%e4%bb%a3%e7%a0%81%e6%b4%81%e7%99%96/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>复苏</title>
		<link>http://www.hui-wang.info/2012/05/01/%e5%a4%8d%e8%8b%8f/</link>
		<comments>http://www.hui-wang.info/2012/05/01/%e5%a4%8d%e8%8b%8f/#comments</comments>
		<pubDate>Tue, 01 May 2012 12:57:51 +0000</pubDate>
		<dc:creator>王辉</dc:creator>
				<category><![CDATA[其它]]></category>

		<guid isPermaLink="false">http://www.hui-wang.info/?p=2737</guid>
		<description><![CDATA[阳光撒在身上终于有了暖洋洋的感觉，花儿红了，树叶绿了，新的轮回开始了。其实他本没有停止过，只是有时欢乐，有时苦涩，我索性取一个万物复苏的季节当做新的起点，享受生活中的湍急和悠然。 年月一步一步毫不知疲倦的走在身前。有人因此激动的期待着充满未知的明天，也有人因此为逝去的昨天而惋惜不已。可无论如何，欢喜也好，忧伤也罢，我们总是被带着往前走的。既然无法阻挡，何不与年月来场赛跑，架上幸福的飞毯，远远的把它抛在身后。我的飞毯，她和我一起织就，从十七岁那年，很庆幸一路上有她，很感激一路上还会有她，我的妻。]]></description>
			<content:encoded><![CDATA[<p>阳光撒在身上终于有了暖洋洋的感觉，花儿红了，树叶绿了，新的轮回开始了。其实他本没有停止过，只是有时欢乐，有时苦涩，我索性取一个万物复苏的季节当做新的起点，享受生活中的湍急和悠然。</p>
<p>年月一步一步毫不知疲倦的走在身前。有人因此激动的期待着充满未知的明天，也有人因此为逝去的昨天而惋惜不已。可无论如何，欢喜也好，忧伤也罢，我们总是被带着往前走的。既然无法阻挡，何不与年月来场赛跑，架上幸福的飞毯，远远的把它抛在身后。我的飞毯，她和我一起织就，从十七岁那年，很庆幸一路上有她，很感激一路上还会有她，我的妻。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hui-wang.info/2012/05/01/%e5%a4%8d%e8%8b%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>平常工作都干啥</title>
		<link>http://www.hui-wang.info/2012/01/08/%e5%b9%b3%e5%b8%b8%e5%b7%a5%e4%bd%9c%e9%83%bd%e5%b9%b2%e5%95%a5/</link>
		<comments>http://www.hui-wang.info/2012/01/08/%e5%b9%b3%e5%b8%b8%e5%b7%a5%e4%bd%9c%e9%83%bd%e5%b9%b2%e5%95%a5/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 15:35:53 +0000</pubDate>
		<dc:creator>王辉</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[法国]]></category>
		<category><![CDATA[通俗]]></category>

		<guid isPermaLink="false">http://www.hui-wang.info/?p=2689</guid>
		<description><![CDATA[“你在法国做什么？”，亲朋好友，每每会这样问起。我的回答总是很简练，我是搞计算机的。说实在的，这说了给没说一样，搞计算机，那面大了去了。其实，我也不是故意这样的，毕竟隔行如隔山，你描述的有头有尾的，别人未必感兴趣呀。今儿个，写写平常工作都干啥，希望给有意的朋友，做个更加细致的解释。 我是一个程序员，富丽堂皇的说，叫软件工程师，通俗易懂的讲，是编程的。至于编什么程，在正常发工资的情况下，老板说了算。 老板是卖金融软件的。这个软件有点大，能做不少事。其中有一个，是让电脑屏幕上能实时的显示，金融市场上的数据，比如美元对欧元的汇率，股票的价格等等。如何把这些数据搬到屏幕上，并且让他们一闪一闪的实时刷新，就是我所在的小分队的主要任务。 经过前辈们的努力，这个功能是实现了，但随着时代的发展，客户的要求越来越高，他们嫌数据更新的有点慢。所以现在又有新的任务了，要把数据运的再快点。这个时候，刚刚毕业的我，被招进来了。 要想富，少生孩子多种树。这句话告诉我们，只生孩子不种树，是会阻碍经济快速发展的。软件数据运的太慢，与孩子和树是没关系的，找到它的瓶颈所在，便是我平常工作中所面临的问题。怎么听起来，有点像搞计划生育的？]]></description>
			<content:encoded><![CDATA[<p>“你在法国做什么？”，亲朋好友，每每会这样问起。我的回答总是很简练，我是搞计算机的。说实在的，这说了给没说一样，搞计算机，那面大了去了。其实，我也不是故意这样的，毕竟隔行如隔山，你描述的有头有尾的，别人未必感兴趣呀。今儿个，写写平常工作都干啥，希望给有意的朋友，做个更加细致的解释。</p>
<p>我是一个程序员，富丽堂皇的说，叫软件工程师，通俗易懂的讲，是编程的。至于编什么程，在正常发工资的情况下，老板说了算。<span id="more-2689"></span></p>
<p>老板是卖金融软件的。这个软件有点大，能做不少事。其中有一个，是让电脑屏幕上能实时的显示，金融市场上的数据，比如美元对欧元的汇率，股票的价格等等。如何把这些数据搬到屏幕上，并且让他们一闪一闪的实时刷新，就是我所在的小分队的主要任务。</p>
<p>经过前辈们的努力，这个功能是实现了，但随着时代的发展，客户的要求越来越高，他们嫌数据更新的有点慢。所以现在又有新的任务了，要把数据运的再快点。这个时候，刚刚毕业的我，被招进来了。</p>
<p>要想富，少生孩子多种树。这句话告诉我们，只生孩子不种树，是会阻碍经济快速发展的。软件数据运的太慢，与孩子和树是没关系的，找到它的瓶颈所在，便是我平常工作中所面临的问题。怎么听起来，有点像搞计划生育的？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hui-wang.info/2012/01/08/%e5%b9%b3%e5%b8%b8%e5%b7%a5%e4%bd%9c%e9%83%bd%e5%b9%b2%e5%95%a5/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Java的枚举和接口</title>
		<link>http://www.hui-wang.info/2012/01/08/java-enum-and-polymorphism/</link>
		<comments>http://www.hui-wang.info/2012/01/08/java-enum-and-polymorphism/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 14:01:37 +0000</pubDate>
		<dc:creator>王辉</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[多态]]></category>
		<category><![CDATA[枚举]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://www.hui-wang.info/?p=2675</guid>
		<description><![CDATA[Java中的枚举，不仅可以用来列举常量，而且可以实现接口。这第二点很重要，它使得枚举类型具备了多态的特性。但它又有一定的缺陷，特别是遇到枚不胜举的时候。 对于每一个新加入的枚举元素，他都必须实现接口中的所有方法。即便是在一个不大的接口的情形下，当元素数量增加到一定程度的时候，源文件就会变得相当巨大。虽然所有枚举元素，都是在实现同一类方法，但毕竟细节不同，所以把他们列在一起，影响阅读的欢乐性。除此之外，每次增加新的枚举元素，都要对此枚举文件进行修改，不符合开闭原则。 为了克服这个缺陷，我们可以尝试着，把不同的枚举元素放到不同的文件中，单独成型，并对接口进行实现。如此以来，新加的元素，就写在新的文件里，小而清晰，各自独立。 可这样的作法，有得必有失，那就是失去了，枚举类型中能获取所有类型那个静态函数，values()。 其实补救的方法还是有的，那就是创建一个新类，在里面手动添加新加入的元素，然后通过它进行索引。开闭原则遵守的再好，还是一定要找个切入口的，但口越小越好。 示例在此。看你能不能发现那个小口。]]></description>
			<content:encoded><![CDATA[<p>Java中的枚举，不仅可以用来列举常量，而且可以实现接口。这第二点很重要，它使得枚举类型具备了多态的特性。但它又有一定的缺陷，特别是遇到枚不胜举的时候。</p>
<p>对于每一个新加入的枚举元素，他都必须实现接口中的所有方法。即便是在一个不大的接口的情形下，当元素数量增加到一定程度的时候，源文件就会变得相当巨大。虽然所有枚举元素，都是在实现同一类方法，但毕竟细节不同，所以把他们列在一起，影响阅读的欢乐性。除此之外，每次增加新的枚举元素，都要对此枚举文件进行修改，不符合开闭原则。<span id="more-2675"></span></p>
<p>为了克服这个缺陷，我们可以尝试着，把不同的枚举元素放到不同的文件中，单独成型，并对接口进行实现。如此以来，新加的元素，就写在新的文件里，小而清晰，各自独立。</p>
<p>可这样的作法，有得必有失，那就是失去了，枚举类型中能获取所有类型那个静态函数，values()。</p>
<p>其实补救的方法还是有的，那就是创建一个新类，在里面手动添加新加入的元素，然后通过它进行索引。开闭原则遵守的再好，还是一定要找个切入口的，但口越小越好。</p>
<p>示例<a href="https://gist.github.com/1578420" target="_blank">在此</a>。看你能不能发现那个小口。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hui-wang.info/2012/01/08/java-enum-and-polymorphism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

