Codejie's C++ Space

Using C++

LingosHook:编码“疯”格--“代码洁癖”及其“代价”有感


    咋说呢,我不是一个完美的人,这个我非常肯定;我写的代码也不是完美的代码,这个我也非常肯定,但,我是一个追求把代码写的完美的人。。。
    
    ‘完美’的定义是跟每个人的‘审美观’相关的。随便段代码来‘展示’一下我的‘审美观’。。。
#include <string>

typedef 
int DictID;

int GetDictID(const wstring& str)
{
    DictID tmp;
    tmp 
= .
    
return tmp;
}

    下面是‘完美’后的代码:

#include <string>

class CDictConvObject
{
public:
    typedef 
int DictID;


public:
    
int GetIDByTitle(const std::wstring& title, DictID& id) const
    
{
        id 
= 
        
if(id == DICTID_INVALID)
            
return -1;
        
return 0;
    }

    
}
;

    这里我不解释、不评论为什么做这样‘完美’修改,展示上面代码的目的只有一个--“完美的代价”。
    心目中“易懂”、“遵规”、“开放”、“灵活”、“分离”(也许还有等等)的代码才是好的代码,因此在写代码时,尽量做的是“完美”些,再“完美”些。。。所以一般来说,我完成一段代码或者程序的时间分配为:
                40%思考-20%编码-15%调试-25%重构!
    看出来了吗?完美的巨大代价--时间的消耗!当然消耗应该还有体力的消耗--一段代码可能会被写来改去,直至重写很多次。往往一个简单的功能,我会用一个或多个函数,甚至对象去实现,只是为了“完美”。。。这就是我写代码的“疯”格~~  我也知道自己有这方面的“偏执”症,简单说应该算是有较严重的“代码洁癖”。。。因此我尽量花费更多的时间去“思考”,以减少后期“重构”的时间。
    扯了这么多,就是想说,我又要重写LingosHook的一大大段代码。。。。为了让LingosHook摆脱Dict的限制,我在HTML解析的代码中增加了相应的直接HTML方式的Dict支持,一切都OK了,但。。。但重看代码时,我怎么都觉得根据Dict解析结果,和根据HTML解析Dict(不了解代码,这里是有点晕。。)应该是两个独立平等的对象,Dict结果解析时的不应该涉及HTML词典解析,两种需求(功能)不应该交叉的。。。于是,我添加了两个对象:SpecialDictParser和HtmlDictParser,独立存在与HTML解析过程中。。。唉,本来只是添加了不到100行代码且已经OK的功能,现在不仅要全新添加两对象的代码,还要修改原有HTML解析对象中的60%左右代码。。。疯了。。。幸运的是,由于原有词典结果解析的流程和模块设计比较合理,各个词典(Vicon,Langdao,Fundset)这次完全不用动,省去了一半的时间。。。
    所以,总的来说,要想“完美”而又没有“代价”,需要在动手前,更加“开放”、“周全”的“思考”。。。。



<---头晕的分割线--->
    我知道上面的根本就看不懂,写的很混乱,那是因为--添加了新的SpecialDictParser和HtmlDictParser对象以后,想到需要重写的代码时,我疯了。。。
   

posted on 2010-06-09 18:31 codejie 阅读(586) 评论(2)  编辑 收藏 引用 所属分类: C++随笔而已LingosHook

评论

# re: LingosHook:编码“疯”格--“代码洁癖”及其“代价”有感 2010-06-15 16:54

呵呵,已经取得了不少进步了啊,你做的已经很好了!
其实不必把代码写得太完美,只要把注释写明白了,相信不会给后来者造成很大困难的。  回复  更多评论   

# re: LingosHook:编码“疯”格--“代码洁癖”及其“代价”有感[未登录] 2010-06-15 19:39 codejie

@康
。。。完蛋,我代码的注释一直都很少,因为我一直觉得代码如果写的很‘人性’易懂的话,代码比注释来的更直接和清晰。当然了,真实的原因应该是--懒。。。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜