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

Life in America

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

2016年4月5日 Java 心情随笔 技术或者看起来像技术 3

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

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

1. Manual Unboxing

private Stack<Integer>[] holdingStacks;
...
for (int i = 0; i < numberOfHoldingStacks; i++)
{
    if (holdingStacks[i].isEmpty() == false
     && ((Integer) holdingStacks[i].peek()).intValue() < smallestNumber)
    {
     smallestNumber = ((Integer) holdingStacks[i].peek()).intValue();
     stackWithNextSmallest = i;
    }
}
Redundant Manual Unboxing

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

2. 多余的变量

if (putInHoldingStack(nextNumber) == false)
{
    success = false;
    return success;
}
Redundant Intermediate Variables

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

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

if (condition)

而不是

if (condition == true)

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

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

3. 滥用 new 操作

String inputInfo = new String();
...
String line = new String();
new String();

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

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

if (first == null)
{
    NoSuchElementException ex = new NoSuchElementException();
    throw ex;
}

4. 双重break之禁忌

switch (input1)
{
    ...
    case '?':   //Display Menu
        printMenu();
        break;
    default:
        System.out.print("Unknown action\n");
        break;
        break;
}
Double breaking

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

5. private public

private class Node
{
    public Object data;
    public Node next;
}
private public

没看懂,没看懂...(

6. println()之禁忌

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

System.out.println()

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

7. TextPad FTW?

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

TextPad

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


 

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

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

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

Lin
Follow me at

Lin

博主 at Lin's Treasure
博主真身,目前运维 Lin's Treasure 以及附属的 LTTN。纯属一介普通人,对高技只会操不会做。能熟练开关电脑、敲打电视、弄砸考试云云。目前暂居(大误)万恶之源美帝,深感国内射秽主义大法好。爱前沿CE,爱音乐,爱游泳,爱游戏,爱折腾。资深安卓粉和肠粉。编程菜鸟。若有不足,敬请指教ww
Lin
Follow me at

Latest posts by Lin (see all)

 

说点什么

3 评论 在 "论你校(ASU)教师代码风格"

avatar
10000
  Subscribe  
最新 最旧 得票最多
订阅
Dont
订阅者

我的老师在写C的单链表的时候,到表尾的判断也喜欢写成if(p->next != NULL)。

Sion
游客

感觉好多内容,不用IDE根本想不起来怎么写。之前我有个考试让我手写那个import xxx那种,我一般都靠IDE提示,硬是一点头绪都没有(平时写的时候太不动脑子了哈哈哈)