如何写模块化的代码?

    自学CS也有几个月了,既然打算以后靠这个吃饭,就要静下心来学习,走得比一般人更远。

    最开始学习时,看到的是语言,语法。后来,就是算法结构之类的技术了。

   

    虽然各种语言,数据结构算法还没有打通关,但自信心是建立起来了。找个工作,养活自己,还是不愁的。

    既然不愁,那就好好磨练自己的头脑。从这个学科的发源开始,好好学习。

    逻辑、数学,是逃不掉的了。尤其是逻辑,本科阶段就有点点兴趣,却一直没去研究。对数学比较暧昧,一方面不自信,虽然应付各种升学考试,成绩都是偏好,但一直没觉得自己入门了。



    OK,既然打算一条路走到黑。就要自觉摆脱混日子的想法,精益求精。


    所以,今天,就小结一下,如何写模块化的代码


    之前刷题时,都是一个主函数把代码全写完。比如超级简单的一个数列,找出最大数。

    就把循环写在 main()函数里面。

    for ( i = 0; i < N; i++){

        if ( A[ i ] > max){

            max = A[ i ];

        }

    }


    相当不好看。应该提出来,单独作为一个函数,在主函数main()当中,直接引用即可。

    这是第一步,既将一段实现一个功能的代码(如找到数列最大元素),以函数的形式调用。这个第一步,就是模块化的一个开端。

    走出第一步后,将以前刷过的题,又刷了一遍,凡是能搞成函数的,我都搞成了函数。这就犯了矫枉过正的错误----模块化的原则。

    模块化的原则,应该是逻辑上的,而不是形式上的。一个模块,或者相邻的模块,相邻的函数,在抽象程度上,应该保持优雅的一致性。不是只通过调调缩减,空格,把眼球对美的需求满足了就行了。更重要的是,要能够---关掉屏幕后,这段代码的大致结构,还能给人留下一个印象,做了什么事情,还能较为清楚的描述出来。这样的模块化,才是好的,这样的函数,才是我应该写的。

 

    有了对模块化的追求,可能导致敲击代码效率的下降。这就要将编码,与美化,分隔为两个动作了。首先要确保代码完成,能编译铜通过。其次,在测试前后,再完成提炼函数,调整格式这样的工作。

    不应该一开始就让格式限制思路。比如说现阶段,堆排序还不熟练,写好伪码,边想变敲,还能写出来。但还要去顾忌美不美,脑子就负担不过来了。还不如先敲对,再求美。

你可能感兴趣的:(如何写模块化的代码?)