在C/C++中沉浸的时间也不算短了,代码写了不少,用过的模式不多不少——泛模式化和泛政治化一样,都是一种非常极端的思路,C++泛型也玩弄了好一段时间。
C++的强大无可置疑,但强大的缺点也叫人无可奈何。
C/C++都是命令式语言,所谓“命令式语言”指的是告诉目标要做什么和怎么做。使用这种类型的语言的时候,通常采用自顶向下设计方法。打个比方,如同将军率军出征。
先总揽大局,将兵种,兵力,地形,天候,粮草等诸多因素尽数考虑到,然后开始思考布阵,将官的布置,各个将官兵力,兵种的配置等。就这样逐级向下派分任务,直至最后的小分队甚至单个士兵。在这之中,重点要求考虑“全”,“周”则是其次。这个“全”和OO中重点强调的保证接口完善设计准则很接近。
自顶向下的设计中如果考虑欠“全”,最后往往意味着整个设计的失败——难以修改,维护。
在我看来,自顶向下的设计主要是面向“经验丰富”的设计者的,一般人难以企及——包括我自己。
多次尝试“自顶向下”的设计方法失败后,越发觉得经验浅薄。郁闷中,偶然(从VIM转到Emacs的过程中)接触到了LISP。起初是觉FP挺好玩,根据自带教学文档学习。前不久找到PaulGraham的OnLisp一书,渐渐理出了些头绪,对LISP有了更多地了解。
书中点了自顶向下设计的名,强调LISP是bottom-up,也就是自底向上的设计方法。目前仍在学习中,不好妄加评述。个人认为,他们是互补的。
不想当将军的士兵不是好士兵,但是连士兵都当不好,就更别提档将军了,是吧?HEHE
C++的强大无可置疑,但强大的缺点也叫人无可奈何。
C/C++都是命令式语言,所谓“命令式语言”指的是告诉目标要做什么和怎么做。使用这种类型的语言的时候,通常采用自顶向下设计方法。打个比方,如同将军率军出征。
先总揽大局,将兵种,兵力,地形,天候,粮草等诸多因素尽数考虑到,然后开始思考布阵,将官的布置,各个将官兵力,兵种的配置等。就这样逐级向下派分任务,直至最后的小分队甚至单个士兵。在这之中,重点要求考虑“全”,“周”则是其次。这个“全”和OO中重点强调的保证接口完善设计准则很接近。
自顶向下的设计中如果考虑欠“全”,最后往往意味着整个设计的失败——难以修改,维护。
在我看来,自顶向下的设计主要是面向“经验丰富”的设计者的,一般人难以企及——包括我自己。
多次尝试“自顶向下”的设计方法失败后,越发觉得经验浅薄。郁闷中,偶然(从VIM转到Emacs的过程中)接触到了LISP。起初是觉FP挺好玩,根据自带教学文档学习。前不久找到PaulGraham的OnLisp一书,渐渐理出了些头绪,对LISP有了更多地了解。
书中点了自顶向下设计的名,强调LISP是bottom-up,也就是自底向上的设计方法。目前仍在学习中,不好妄加评述。个人认为,他们是互补的。
不想当将军的士兵不是好士兵,但是连士兵都当不好,就更别提档将军了,是吧?HEHE