注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

BA5AG的博客

业余电台 Arduino RaspberryPi

 
 
 

日志

 
 

[Java]Lab III feedback  

2012-11-09 13:19:58|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Java的第三次作业的要求是:

Write a program that maintains a "database" of names and scores of students.

A student has a name consists of several words and records of scores of varies courses. Each record has a name of the course and the marks the student gets.

User can input or import information and scores for students and retrieve them later. To input a score, the user may key in the name of the student, the name of the course and the marks. Your program then try to find the student in the database and add or replace the score for the course. If the student can not be found in the database, a new student should be created and be put into the database. If the course can not be found in the records of the student, a new record for the course should be created, otherwise, the score should be replaced by the newly inputed one.

The user can provide name of a .CSV file which contains records of students information to import the data into the database. The columns in the .CSV files are:

name, course name, score 
User can input the name of a student to retrieve the scores of all the courses he/she gets, along with the total and average marks. User can input name of a course to retrieve a list of every student who has marks for this course, along with the number of the students and the average marks.

Your program is able to store the database into a file and read them back at the beginning of the execution.

The whole system is a Unix style shell system, which means you are going to develop one program for one function of your system, not a concrete one big program, no menus, no GUIs.


以下是助教Watashi给出的Java第三次作业的反馈:
大部分人会想到将程序分成一个管理数据的Database及可能的Utility和若干个供用户调用Main

* 可能会扣分的问题基本是:DB和UI严重耦合。简单来说,如果作业要求改成写GUI的,基本没有一个类是能重用的。
** 非常糟糕的:UI都是直接call一个类,然后退出。首先这和写在一个类基本没区别了,其次,在DB里做输出是一件非常糟糕的事情,直接影响DB的重用。DB应该只返回结果,而不是输出结果。
** 也挺糟糕的:DB除了序列化和反序列化什么也没有,裸的数据列表直接交给类操作。
** 当然还有压根没有分离出DB的。
* 当然,还有函数名和所做的事,类名和功能八杆子打不着的情况……
* 该是static的方法没有static,还要通过new一个完全没有意义的object调用
* 严重的code duplication,一看就是要重构的

至于下面这些,随便扯扯,不影响分数
* Unix style,就不说KISS了,我想说的是be quiet,程序默认从args直接获得参数,做好自己的事就好了,别像好多自主知识产权的2b软件一样,尽整些没用东西刷存在感。
* 程序不能正确处理的时候,应该将错误信息输出到stderr,然后返回个1啊2啊什么的。而正确的(部分)结果应该输出到stdout。(返回0)
* 而DB的错误不应该输出到stderr,应该new Exception往上抛。
* 程序中的mirror bug,还有reinvite the wheel。
* 大多数应用场景都能用foreach代替iterator,此时明显用前者更好。

最后
[Java]Lab III feedback - kc2wag - BA5AG的博客http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
至少做到
[Java]Lab III feedback - kc2wag - BA5AG的博客http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367
和让eclipse帮你缩进一下吧= =b

PS: 对于各种Container,还是用Java已有的好;辅助的第三方库也推荐使用;作业写关键的代码就好了
  评论这张
 
阅读(214)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018