在编码时禁止使用goto语句;
进行面向对象编程时要尽可能的面向对象,最好引入各种设计模式;
设计关系数据库时要遵从范式;
多线程程序可以提高程序性能;
C语言的效率要比c++效率高;
......
 
    请问这些条率款正确吗?要我回答:对,也不对,仿佛又要扯上辩证法了!(本人打心眼里反感辩证法,感觉辩证法就是某个**团体忽悠大众来给自己开脱的,有篇文章挺有意思,大家可以看看《辩证法与放屁》)准确解释下我对以上条款的认识,首先当你要准确理其含义,然后分析其优劣,然后再看看这些条款是否正确,究竟适用在何种场景下,又在何种场景下不适用。
 
    先说goto语句,感觉goto语句是个冤大头,被很多编程书籍给妖魔化了,二话不说,附上链接http://zh.wikipedia.org/zh-cn/Goto,我反正在写相关有复杂逻辑的程序时就直接上goto,但也总有那么几个人会大义凛然的过来给你指出错误,说:不要用goto;答:为什么不让用? 说:书上说的,别人都这么说;答:.......。 心里暗想“尼玛你自己也先理解下啊,尼玛你看看Linux kernel 有多少goto,尼玛老子就不改气死你。”
 
    “进行面向对象编程时要尽可能的面向对象,最好引入各种设计模式;”我相信很多看过设计模式的人都会养成这么一个习惯,在做程序设计时怎么才能尽可能多的用上各种设计模式,最后走上过度抽象,过度设计的不归路。请看酷壳博主陈皓老师的《如此理解面向对象编程》,请看我曾经的一篇文章《怎样去平衡C++项目的设计?》
 
     范式是关系数据库的理论基础,所以我们在进行关系数据库设计时常常被要求要遵从各种范式,但是在很多场景下完全使用范式倒是不合理的,特别是海量数据的应用中,冗余数据的使用,为了性能进行一些反范式设计是必须的。但是话说回来,物极必反,现在又有一种说法叫做”一个DBA是否有足够的设计能力,就看他有多大的能力做反范式设计就可以了。“请看看这位“光芊源”朋友的反驳“虽然现在因为磁盘廉价,所以大家都提倡反范式,但是不明白为什么要反,为什么不能问为什么?不搞清楚,跟着瞎反,到后面会发现数据库性能超级差。可以反范式,但是一定要明白为什么反,很多时候反是为了增加性能,假如不能增加性能,反而会减弱性能那为什么要反呢”;
 
    “多线程程序可以提高程序性能”;我想很多人把线程当做了提高性能的万金油,这起一个,那起一个,刷刷起多个。拜托你先看看你的cpu有几个核好吗?你先处理掉数据同步的问题好吗?你处理掉数据同步的问题你看看你那各种锁究竟是提高了程序性能还是不但让程序性能降低,还增加了编码,调试,维护的难度。请看看我的一点薄见《谈谈多线程编程》
 
    “C语言的效率要比c++效率高”;语言大战在程序猿这个原始世界里就没停息过,还是那句老话,各种语言有各种语言的适用场景,鄙人薄见《存在即合理-开发语言》,话说回来,谈起性能,从运行效率来说C语言确实要比C++语言要快一些。但是效率也分两种:运行效率和开发效率(c++快点没反对意见吧)。再说了你也得分析你的性能损耗在哪些地方吧,你要是在IO上,在网络上,你选择机器码编程也白搭。推荐书籍《提高c++编程性能的编程技术》
 
    我觉得类似的条款还有很多,比如《SQL反模式》里的各种反模式。还有论坛上一些技术学院派和实用派的争论,总之我们看见一个条款,尽量多问几个为什么?尽量多联系实际考察其是否合适?结果只有一个:我们只用合适的技术。