代码互审的一点看法

我复审的代码是来自于12061167  林旭鹏的单词搜索代码。

代码的主要方法是遍历命令行下的路径目录,如果是符合后缀要求的文件则读取文件内容并根据mode(0或1或2)内容加入单词表并且按要求排序输出;如果该目录下是目录文件则递归打开目录文件依次检查每一个文件是否符合要求后在符合要求的文件根据mode类型加入单词字典序排序并且输出。

代码在功能上能够实现根据mode的值提取符合要求的单词并根据先频率再字典序的方式排序输出到指定的文件里,但也存在一些不足:

1.在类wordlib的定义中,当构造函数执行后,系统会依次给ss、words、twoword、sthrwords和deli名字的字符串或者是wordm组分配10000000的空间,如果查找文本的单词数目少的话,在实现类的基础上大大增加了内存消耗,如果单词数目过多与初定的10000000,则会逸出造成系统崩溃。所以我建议此处可以根据搜索到的单词进行动态内存分配的办法,根据需求占用内存存单词,既能平衡内存使用率,也能避免下标逸出的问题。

2.在单词表的排序输出方面,代码根据mode的值(0、1、2)来分别排序单词表的每个单词并输出,其实1单词、2单词、3单词都是存于wordm里的word字符串中。对于单词的比较和排序输出,3者的方法都几乎是一样的,分成3次写会显得代码有冗余。所以我建议根据mode的类型加载完单词表后,可以把单词表的排序打印输出分别各写成一个方法就好,可以使代码更加整洁,集中性更加强。

3.代码在查找符合要求的单词方面用的是判断分隔符再连接形成单词存入的办法,我建议可以使用正则表达式查找的办法,通过改变正则表达式的匹配串就能通过相同的查找函数查找到符合要求的单词,这样3个查找单词的函数也能合成一个通过mode改变匹配串查找单词的方法,也更加直观并且减少代码长度使代码更加清晰。大的方面也可以使用c#集成的map或者dictionary类型来实现单词查找,减少工作量。

代码的优点就是把任务分配成一个个模块任务完成,每个模块的任务量接近,不会产生头重脚轻的现象,模块之间联系紧密,逻辑思维清晰严密,同时也考虑并且处理了异常,保证了代码实现的正确性和科学性。并且变量及方法的定义也很科学,易读易调试,符合代码规范。

时间: 2024-10-13 12:02:32

代码互审的一点看法的相关文章

自己对Java的一点看法

作为一个理论性比较强的学生,谈一下这段时间对java以及对程序设计的理解 java相对于其它语言有几个特点,一个是面向对象,一个是强类型           首先谈谈面向对象,关于类和对象,这个一定要有深刻的认识,在类中,首先一个最重要的概念就是构造方法,为什么说它重要,就是因为你只要需要创建一个类地实例对象就需要调用到构造方法,这个就决定了这个类一开始要做什么,还是举一个例子吧         比如说BrfferedReader类,这个的构造方法就是BrfferedReader(Reader

让代码更帅一点

博主的私人博客 写代码最重要的是实现功能,但是除了实现功能之外,我们还应该想办法,让代码变得更规范,更漂亮 最近在读<禅与Objective-C编程艺术>和<Effective Objective C 2.0:编写高质量iOS与OS X代码的52个有效方法>,这两本都讲解了代码规范方面的东西,结合自己平时的代码习惯,发现有很多地方自己做的还是不够好,代码写得不够帅,所以总结一下,让以后的代码更帅一点 条件语句 条件语句一定要使用括号,如果不使用括号,if后面的那行代码删除,之后的代

关于shopnc系统使用的一点看法,静态规则

关于shopnc系统使用的一点看法, 自从上了这套系统以后, 系统bug不断, 官方至今圈子的静态化问题都没有处理好, 这个问题,我百度了很久,几乎没有人能解决, 想换成discuz程序把, 又需要做数据库对接,非常麻烦, 如果有人解决了shopnc商城系统的圈子静态规则,希望您能跟我联系一下,付费收规则. 谢谢.

对struts1.2中ActionForm的一点看法

转自:http://hi.csdn.net/space-62502-do-thread-id-4019.html   觉得总结的不错,也收藏学习下. ActionForm的应用 (1) .创建一个form类必须继承四个夫类中的一个.比如继承ActionForm. (2) .一个form类中的每一个属性都将和页面中否form 表单中的每一个元素一一对应 例如. 一个表单为:<form> <input type="text" name="username&quo

分享我对代码命名的一点思考和理解

一个软件最后都会落实到代码,而代码,其背后的架构设计或设计思想或模式固然重要,但我觉得更重要的东西则是良好的命名.混乱或错误的命名不仅让我们对代码难以理解,更糟糕的是,会误导我们的思维,导致对代码的理解完全错误.相反,良好的命名,则可以让我们的代码非常容易读懂,也能向读者正确表达事物以及逻辑的本质,从而使得代码的可维护性就大大增强. 另外一点也许大家还没感受到,那就是良好的命名,以及良好的命名习惯,由于我们总是对每个概念的名称要求非常苛刻,我们会思考这个名称所表达的概念是否正确,该名称是否正确表

关于Firedac的一点看法

Firedac集成在Delphi中已经有几个版本了,偶尔也拖到Form上试着用用,虽然知道Firedac有可能是最终的(或很很长时间内)数据访问技术,可一直不能接受它,其中最大的原因就是过于“复杂” -- 虽然复杂也意味着功能更强大. 就个人的感觉而言,一个好的软件系统,[基础]是好的设计,没有好的设计,意味着软件的生命不会长久,只要不是”一次性“的软件,必然会有升级和维护. 重构就是一种非常好方式,简单的来说,提炼方法,提炼类和接口等等.而针对RAD开发来说,是需要一定的“勇气”的,因为DEL

对人生的一点看法

说到人生这个话题,你的第一个反应应该是"话题太大,无从谈起"吧?对于"话题太大"的话题,伴随左右的似乎总是有这么一句:"仁者见仁智者见智".所以,这里我也只是发表我的看法. 在我看来人生其实很简单,但如果让你也认同"人生很简单"这个命题,你首先得认同下面三个观点,本文所有的讨论都是以下面的三个观点为基础的,这三个观点就是: 200年以后,没有人会记得你是谁.你记得你爷爷的爷爷的生平事迹吗?连你都不记得,更何况其他人呢? 即便你

关于js的回调函数的一点看法

算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做了android之后更加感觉到手机端开发的重要性,现在做native App  和Web App是主流,也就是说现在各种基于浏览器的web app框架也会越来越火爆了,做js的也越来越有前途.我也决定从后端开发渐渐向前端开发和手机端开发靠拢,废话不说了,我们来切入正题“js的回调函数”相关的东西. 说起回调函数,好多人虽然知道意思,但是还是一知半解.至于怎么用,还

对苹果公司未来的一点看法

这段时间苹果和微信的"打赏 "风波,闹得行业沸沸扬扬.大家纷纷站出来指责苹果公司太霸道,为了利润什么钱都敢要.而且有很多人看衰苹果,觉得如果微信等主流的软件一旦不支持苹果的设备,那么苹果的前景将一片黯淡.网上有太多的文章和论点在讨论苹果和微信们到底谁重要,就不在这里重复别人的观点了,没多大意义. 其实我也对苹果的前景不太看好,并不是因为这次的风波.个人感觉即使没有这场风波,苹果的未来仍然不乐观.前段时间看了<乔布斯传>,被乔布斯的魅力深深的折服的同时也坚定了自己看衰苹果的看