matlab :: Lost Ferry
来源: BlogBus 原始链接: http://ferryslife.blogbus.com/logs/2006/06/2659265.html 存档链接: https://web.archive.org/web/20061109233059id_/http://ferryslife.blogbus.com/logs/2006/06/2659265.html
Lost Ferry 野渡无人舟自横 .: 发表评论 :. .: 最后更新 :. :: << 垂直搜索 | 首页 | 数学 >> matlab matlab代码越写越多,每实现一个新功能或者画一个图都得新写一个函数或者修改已有的函数,写一个函数就得新建一个.m文件。对一些重复性的工作,改脚本中变量的参数是最方便的。但是经常改过去又得改回来。总之,有一二十个.m文件后,我就有些恶心了,通过改参数实现新功能的方法越来越麻烦。更恶心的是找一个之前写的东西都不好找,matlab的编辑环境实在是太土了,文件列表的功能都没有,比ultraedit还弱。这个公司钱也赚得不少,为什么就不花些精力整一下编辑环境呢? 感觉matlab完全是面向函数的,即使引入了类的概念。那哪儿是类呀?比如一个类的变量p,调用成员函数fun得这样:fun(p)。wk~。没有继承没有多态没有封装,还算什么类?所以,老老实实写函数吧。 但是matlab里写函数就得新定义一个文件,文件名就是函数名,wk~。也就是说,如果要写一百个函数就得定义一百个文件。wk~。在c++/Java里面一个类都经常包含数十个函数,还是公有。良好的编程规范建议一个函数不要超过30行甚至更少。一个函数应该只干一件事情,就像函数名所描述的。 今天重构了一下代码,把不同功能的函数扔到不同的目录里,目录以及子目录,就像Java里的package一样。函数也打散成更小的模块。目录对应于一个类或者名称空间。重构后,感觉清爽多了。要完成什么新的任务很快就能整出来,再不用费尽的改这个改那个。 有些代码是Louie的。其实整个项目基本上就是移植他的matlab代码。开始看他的代码的时候,觉得写得还不错,变量名函数名挺长的,定义和流程也都很清晰,很容易看懂。但是这几天越看越不爽,觉得到处都很丑陋,简直一团乱麻。刚到公司时他自己就说他现在改代码或者搞新的代码特别麻烦。本来开始只有核心的几个算法,后来越加越多,越来越乱了。其实这很正常。随着系统的增长,代码自然会变得越来越臃肿,越来越刚硬。每个程序员都会遇到这种情况。所以,我们需要一些方法来解决这个问题。当然,这就是重构。但是怎么重构?重构的基本原则和系统设计的原则是一样的,就是要flexible,robust,adaptable,scalable等等。至于方法,面向对象领域有很成熟的模式。比如设计模式,比如Orthogonality, Open-Close,职责分离等基本原则。具体到语法层面,则鼓励面向接口编程,小函数,小类等等。可能matlab领域还没有这样的程序设计规范或者建议。matlab从语言层面上就缺乏这些的支持。比如没有类(里面的类不算类),没有名称空间。另一方面则鼓励长函数(写一个函数要新建一个文件),鼓励多输入输出,鼓励所有东西都放到一起。这样的模式对于开发和测试一些核心的算法是很方便的,但是当系统增长,要做很多很多的事情的时候,就会逐渐变得越来越混乱,最后成为一堆乱麻。 matlab其实还是很不错的。做数学统计和画图都相当的爽。几行代码肯定可以相当于c++里的几十行。有种手到擒来的感觉。我觉得我要爱上matlab了。 ferryzhou 发表于 2006-06-14 08:31:54 | 引用(trackback0) | 编辑 □ 评论