首先声明:

  1. 本篇博文内的 WJ 仅指代我校的一名姓名拼音首字母为 WJ 的教过我的 Java 教师(我不确定是否有其它老师叫这个),不指代其他人。
  2. 本篇博文内仅我本人的个人观点,如果你不同意我的观点,直接退出即可,勿喷。
  3. 带点个人情绪,虽然我不希望读者会遇到 WJ,但是如果你真的很不幸遇到了,希望你期末教评能给一个漂亮的零分捏🙃
  4. 我承认本篇博文带有严重的情感倾向,如果引起了您的不适,还请谅解

  开学第一课,WJ 就成功的让我对她的水平感到无语。因为有很多同学因网络问题安装 Eclipse 的过程中出现异常,我不止一次的非常明确地说明了解决方案,但是很不幸的是除了一部分同学,其余人包括 WJ 均无视了我的发言。WJ 还给我们出了一个损招:“你们把 JDK8 卸载了换成 JDK7 试一下。”我寻思,您不教新版本的 Java 也就算了,这怎么还退到 JDK7 去了呢?

  不得不承认,WJ 的编程水准有待商榷。她的课我平时没听多少,但是还是能挑出来不少错,由于平时没有记录,记不住全部,我就简单列一点我印象比较深的。

  1. “无用的import语句会增大运行时的内存占用”?

      这个很明显是一个错误的结论,通过观察字节码或者将代码编译成字节码再反编译回来不难发现,没有用上的import语句根本没有进入到字节码中,仅在源代码中存在,所以不可能影响运行时。

  2. publicstatic不能调换位置”?

      这就不多说了,自己试一下吧。

  3. main必须声明在共有类中”?

      同样,懒得解释,不信是错的就自己试试。

  4. 缺省构造函数不是公有的?

      在介绍缺省构造函数的时候,WJ 写出了下面的代码(这里类名是我起的):

    1
    2
    3
    4
    5
    public class Test {

    Test() { }

    }

      然后介绍说:“这就是一个类的缺省构造函数的形式,你不写构造函数和写这个是一样的。”

      我只想说:6

  5. ……

  到这里还只能说 WJ 的代码水平有些拉跨,平时肯定自己不怎么写代码,不然不会连这些基本的东西都傻傻搞不清。

  随后,我将部分问题反馈给了 WJ,最终她也跟我承认了她讲错了,并且承诺会在课堂上纠正。但是根据后面的实际情况来看(我听了一部分课,另外我写博文之前问了同学),她只纠正了上面提到的第四条,其余均没有进行纠正

  其实上面发生的事情不至于让我写一篇博文出来的,最多在群里提醒学弟学妹们一句而已,实际上之前我也就是这么做的,接下来发生的事情才真正令我费解。

  期末大作业我写的是《学生成绩管理系统》,因为我不想写图形界面(主要原因是 Swing 玩的不熟,命令行的实现难度也不一定比 Swing 低),所以写了一个指令操作,大致效果我就直接贴文本了(Admin打头的行为用户输入,其余为程序输出;网页端显示的排版由于字体问题可能显示的不齐,实际上是对齐的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
启动耗时:2674
Admin >> help ?
? : 打印命令列表
clear : 还原缓存区
count : 获取当前缓存区中的信息数量
exit : 退出程序
filter : 筛选满足条件的学生
help : 打印命令列表
insert : 插入学生数据
print : 打印缓存列表中的学生的全部或部分信息
remove : 将缓存列表中的学生从数据库中删除
rename : 修改指定学生的姓名
repeal : 撤销一次对缓存区的操作
save : 保存数据到 json
score : 设置指定学生的成绩
Admin >> filter ?
在当前缓存的基础上筛选满足条件的学生,并用结果放入缓存中,如果缓存为空则使用全体学生作为基础,格式如下:
filter [type] [values...]
解释:
[type]: 指标,支持以下类型:
id: 根据学号进行准确匹配,[values] 中填写要删除的学号,多个学号以空格分隔
ids: 根据学号进行模糊匹配,[values] 中填写学号范围,该指令会筛选出两个学号之间(包括两端点)的所有学 生
name: 根据姓名进行准确匹配,[values] 中填写要匹配的姓名,多个姓名之间以空格分隔
sex: 根据性别进行准确匹配,[values] 中填写性别,true 代表男,只能填写一个性别
age: 根据年龄进行模糊匹配,[values] 中填写年龄范围(两个值,做小又大,左闭右开)
score: 根据成绩进行模糊匹配,[values] 格式如下
[name0] [stage0] [min] [max] [name1] [stage1] [min] [max] ...
解释
[name] - 科目名称
输入 all 代表所有科目,any 表示任意科目
[stage] - 表示成绩规则
daily 平时成绩
midterm 期中成绩
final 期末成绩
practice 实习成绩
total 总评成绩
max 最高成绩
min 最低成绩
[min] - 成绩最小值(正浮点数,包含)
[max] - 成绩最大值(正浮点数,不包含)
该指令会筛选在输入区间内的所有学生
[values...]: 指标参数列表

  WJ 看了之后第一反应竟然是质疑我“你觉得你写的这个程序会有人用吗?”我只能说,如果你让我和市面上的程序竞争的话,我一个人怎么写都没办法比。但是如果和同学竞争的话,我个人还是有自信凭借软件的功能击败同学的图形化程序的。

  然后,我演示了一下几个基本的指令的用法,因为我为了演示实际运行效果,体现生成了一些数据在里面,WJ 看完后我们的对话大概是这样的:

1
2
3
4
5
WJ: 你这些数据是哪来的?
ME: 我用软件随机生成的。
WJ: 你这是一个软件,是拿给别人用的,你弄这些数据干什么?
ME: 我就是弄点数据演示一下程序的效果啊。
WJ: 我们这个大作业是让你写一个给客户用的软件,你弄这么多数据没有用。

  同样,我只想说:6

  最后,WJ 还顺手攻击了一波我的指令:“你不觉得这个太麻烦了吗,用0、1这种数字替代指令,比如 0 代表插入 1 代表删除……不是更好。”

  这波着实给我整无语了,我就想说,如果您觉得英文命令如此鸡肋的话,不如直接用机器码编程。

  噢不对,WJ 平时应该也不怎么写代码才对,抱歉是我整错了

  事件主体就是上面所描述的,接下来再补充点高血压细节。

  在报告模板里面,WJ 写了这么一条:“3. 程序核心代码和运行效果”

  我寻思这句话再怎么理解也要贴点代码上去吧?结果答辩上给我说只需要把包结构截图下来就可以了。

  她还在说报告内容的时候提到了“2. 设计思路”里面可以放 UML 类图,好巧不巧的是我已经放的有了,然后她问我”你这个图是用什么做的?“我就直接回到了 IDEA 的界面,说是用 IDE 生成的,并且演示了一遍。

  然后 WJ 竟然问我这个是不是 IDEA,得到我肯定的回复后还来一句“原来 IDEA 这么高级吗”

  这些细节我就不做评价了,各位自行斟酌。


  最后,我既然在这个时间放出来这篇博文,就代表我已经意识到了这篇博文有可能被 WJ 看到以及我有可能直接挂科的结果。

  如果我的这篇博文“有幸”能够被 WJ 看到的话,您大可找我谈话或者给我挂科,大不了我明年重修 Java,我也真诚的希望您能够意识到自己的问题并且加以改正。