论你校(ASU)教师代码风格

注:春假的文章刚刚更新,各位看官走过路过不要错过哇

最近在写代码作业的时候经常在教师提供的框架之中发现一些奇怪的风格,很多是过时或者多余的操作,虽然对小程序功能性无伤大雅,但是放在那边总觉得怪难受,特地收集出来 (批判一番)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
private Stack<Integer>[] holdingStacks;
...
for (int i = 0; i < numberOfHoldingStacks; i++)
{
    if (holdingStacks[i].isEmpty() == false
        &#038;&#038; ((Integer) holdingStacks[i].peek()).intValue() < smallestNumber)
    {
        smallestNumber = ((Integer) holdingStacks[i].peek()).intValue();
        stackWithNextSmallest = i;
    }
}

众所周知的是,在Java 1.7以后引入了Autoboxing/ Autounboxing的特性,此处不知为何老师依然坚持在代码中手动Unbox,不仅容易出错还拖慢了程序运行

1
2
3
4
5
if (putInHoldingStack(nextNumber) == false)
{
    success = false;
    return success;
}

在上面的例子里 putInHoldingStack 会返回一个boolean,然而很明显这里先是一个if判断,然后再把false 赋值给success,然后再return。为啥不直接return那个函数的结果呢(

还有一个个人的观点是我喜欢写

if (condition)

而不是

if (condition == true)

我知道第二个可读性更佳,然而总觉得托节奏…只是个人意见

还有一个大大的槽点是函数名字实在是太长了,我用IntellIJ的还好,要是用记事本什么的抄抄都能抄错(

1
2
3
String inputInfo = new String();
...
String line = new String();

假如说我们要一个空字符串,只需line = ""即可,使用 `new`` 对性能影响比较大

同理,下面的exception也采用了累赘的操作

1
2
3
4
5
if (first == null)
{
    NoSuchElementException ex = new NoSuchElementException();
    throw ex;
} 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
switch (input1)
{
    ...
    case '?':   //Display Menu
        printMenu();
        break;
    default:
        System.out.print("Unknown action\n");
        break;
        break;
}

虽然我相信default下面俩break的确是意外…意外…

#@ private public

1
2
3
4
5
private class Node
{
    public Object data;
    public Node next;
} 

没看懂,没看懂…(

老师上课还有强调一点说是千万不要用

System.out.println()

具体的理由没给,但是就说“是个很糟糕的习惯”。个人以为吧,毕竟这个年代了,println似乎也不是影响代码的可移植性和习惯的养成

还有一个奇怪的要求是“新手别用Eclipse”,她认为这些IDE“不利于养成脱离电脑作代码的能力”。首先,我个人是重度IDE使用者(顺便说下,JetBrain公司的IntellIJ和PyCharm都是相当好的IDE,比Eclipse好用得多),IDE不仅能方便的排查错误,还极大的方便了代码编写和化简。我并不觉得用IDE弱化了我对Java的理解,事实上这些功能相当程度上让我对各个功能更加得心应手。那么,老师推荐的替代是什么呢?

TextPad

没错,就是那个类似NotePad++的记事本。除了代码高亮以外对程序思想的理解一点都没有帮助(


总体来说,今年在CSE 205的课程比起上学期的110还是一个挺大的进步。去年110基本上就一路翘到放假,而205至少学到了一些新东西,而且我还天天去上课(你确定不是每天上课点名的原因么!

还有一件比较奇怪的现象是CSE 205没教别的,倒是早早的学了GUI (swing/awt),搞得学生有点怨声载道。这点时间咋不学个数据型什么的呢

ASU的这个专业还是有点水,不过没关系,编程更多还是靠自己,学校更多给的是一个框架吧

相关内容