心之所向,百炼成钢

前言

20160709踏上扬州,20170826奔向武汉。在过去的1个半月实习前的培训中,有得有失。

在写这一篇文章的时候,我极力想摆脱实习报告的套路,想要言简意赅。少写一些空乏的琐事,多一些知识的干货。在经过扬州的1个半的培训中。我知道了自己的路,我不愿自己的未来随风随浪,漂浪东西,亲像船无港。

我是一名实习的java码农,但是我希望未来的我是XX产品的开发者。在过去扬州的培训中,分别学习了java.Net。所以我会后续的5篇实习报告中(加上这一篇,一共是6篇)去回顾我过去学习的知识。温故而知新,可以为师矣。

我觉得有一句话,说的挺不错的。”学而不思则罔,思而不学则殆”。这很符合程序员的学习方法。同样是相同经验的程序员,有的程序员技术烂,有的程序员技术很厉害。合理的总结过去学习的知识和举一反三无非可以增加学习的效率,我觉得这是优秀的程序员和普通的程序员之间的分水岭。


Daily Report

在扬州实习中,我们每天都要写一篇日报去简要的描述今天做了什么,完成的进度是什么,遇到了什么问题,可以提出自己对课程的意见,明天应该完成什么。

但是听到这个要求,我内心的想法:"我曹,这么傻逼,完全多此一举,没有任何意义啊。"现在的我发现当时的我真的很无知。而且daily report不是用中文写,是全英文。

具体的格式精确到每一个空格和标点符号,标题要加粗,整个字体是用Arial字体,字体的size10pt,标题和内容之间要空一格。标题符号要用半角,不能用全角。写英文要注意时态,专业术语要大小写。

就是这么简单的daily report,我们培训的60个人第一天没有人能写出符合要求的daily report,就算trainer给我们每天讲格式要求。就是这样的前提下,过去了一个星期,60个人中寥寥无几能写出符合要求的report

到现在为止,我都不能保证我写的英文句子满足时态,大小写,语句结构没问题等这些要求,我也只会写一些to do, learn, study, understand, finish这些简单的语句去描述我当天做了什么,因为英语太烂了,写复杂的句子免不了出错,所以就写很简单的句子。

记得trainer跟我们说过:"你们连这么简单的daily report都完成不了,还指望你们写出质量高的code"。现在想想,说的还真没错。细节决定成败。


Coding style

现在的很多公司开发项目都是以敏捷开发的模式对产品去进行开发。敏捷开发是以用户的需求进化为核心,采用迭代,循序渐进的方法进行软件开发。团队合作在这一环节肯定是少不了,尽然团队合作了,就少不了merge代码。

为了加快团队合作开发的效率,很多公司都会制定出一套Coding Style。让团队的代码风格保持一致。当我一开始去学习本公司的Coding Style,简直生不如死啊。以前在学校写代码保持一贯的野路子风格,毫无风格而言。导致代码阅读性很差。以前代码是这样写的,我自己都看不下去的。

public class QuickSort {
    public static void sort(int[] number){
        sort(number,0,number.length-1);
    }
    
    
    private static void sort(int[] number, int left, int right) {
        // TODO Auto-generated method stub
        if(left<right){
            int i=left,j=right;
            int x=number[left];
            while(i<j){
                //死循环, 只有比x小的元素才能跳出循环 从右到左
                while(i<j&&number[j]>=x){
                    j--;
                }
                if(i<j){
                    number[i++]=number[j];
                }
                //大于x的元素才能跳出循环
                while(i<j&&number[i]<=x){
                    i++;
                }
                if(i<j){
                    number[j--]=number[i];
                }
            }
            //如果i==j的话就会跳出循环, 然后以i为分界线,左边比i小,右边比i大
            //然后我们把左边的元素和右边的元素递归调用,重复以上操作
            number[i]=x;
            sort(number,left,i-1);
            sort(number,i+1,right);
        }
    }


    public static void main(String[]args){
        int[] num={34,1,23,345,12,546,131,54,78,6543,321,85,1234,7,76,234};
        sort(num);
        for(int i=0;i<num.length;i++){
            System.out.println(num[i]);
        }
    }
}

现在的我,代码是这样写的

public class LinkedListCreator {
    private int count;
    /**
     * Creates a linked list
     * @param data the data to create the list
     * @return head of the linked list.The returned linked list
     * ends with last node with getNext() == null
     */
    public Node createdLinkedList(List<Integer> data) {
        count ++;
        if (data.isEmpty()) {
            return null;
        }
        
        System.out.println("list = " + data.toString());
        Node firstNode = new Node(data.get(0));
        System.out.println("before count=" + count + ",value=" + firstNode.getValue());
        Node headOfSublist = createdLinkedList(data.subList(1, data.size()));
        System.out.println("after count=" + count + ",value=" + firstNode.getValue());
        firstNode.setNext(headOfSublist);
        return firstNode;
    }
    
    public static void main(String[] args) {
        LinkedListCreator creator = new LinkedListCreator();
        Node.prinfLinkedList(creator.createdLinkedList(new ArrayList<Integer>()));
        Node.prinfLinkedList(creator.createdLinkedList(Arrays.asList(1)));
        Node.prinfLinkedList(creator.createdLinkedList(Arrays.asList(1, 2, 3, 4, 5)));
    }
}

聪明的人立马看出了之间的区别。首先是注释,注释真的很重要,注释去描述你这个方法具体干了什么的事情,尽量的去描述的清楚。不然以后进了项目,免不了团队合作。如果你不写注释,小心别人问候你全家。

我以前写代码通常是不加注释的,觉得注释可有可无。但是在项目中,效率为前提。优雅的注释,会方便团员去了解你代码的logic。像我之前去看一个项目的源码时候,云里雾里,因为作者加的注释很少很少!!!!!!!看的我生不如死啊,所以我以后写code的时候会加上注释,我体会过那种生不如死的感受。

其次,注释不要出现中文,全英文注释。如果你想成为一名大牛,从书写优雅的英文注释开始。还有一点就是,写中文和英文的时候,输入法频繁的切换,有点影响效率。但是主要的原因还是国际化,编码方面的第一手资料永远是英文,中文文档基本上是二手资料。所以你懂,学好英文真的很重要。

现在的我英文词汇比以前增加不少了,逛一下StackOverflow,还是Ok的。平时和团员用的skype,基本上也是英文交流,在扬州做training的时候,每天会给我们half an hour让我们去交流英文,谈一下话题。

继续回到CodingStyle的话题上

  • 首选如果一个类只有方法,而没有成员变量的话,方法和类之间要空一行。如果有成员变量和方法,那么成员变量和方法之间要空一行,而成员变量不用空。比如一个类是这样的public class A{},那么最后的}这个括号后面要控一行。因为String这个类就是这样写的,别问为什么。

  • 静态变量全大写,成员变量小驼峰,方法小驼峰,类大驼峰,tab缩进换4个点,显示代码的行数和white space,方法空4个点,cssjs也是具体到空几个点。ifwhile等语句前面要空一行, return x, 如果x为空的话,那么前面不用空一行,如果不为空的话,那么要空一行。

  • cssjs的命名规则是a-b-c, htmljsp的命名规则是a_b_c, hard code一律提取到Constant类中,要进行分块。相同的代码出现2次,要考虑到设计模式,进行抽取分离,达到公用。

  • 涉及到数据库的,尽量不要用sql语句,要使用存储过程。model层的代码字段要和数据库表的列表一一对应起来,数据库命名规范a_b_chtmljsp标签要闭合,cssjs抽取到js文件夹下面的文件中。

  • 前台代码和后端代码进行动静分离。前台只显示静态的标签,相关逻辑render to desgin放到js中去完成。画前台UI尽量不要使用position:relative或者absolute,这一点我其实也不知道为什么,哈哈哈哈。

相关的Coding Style就说到这里了,因为实在太多了,要知道Coding Style文档有中涉及到的规范很多,这里的篇幅说不完!!!。

未完待续,下一篇待续。附上3张在扬州实习图

扬州5点30的时候
第一天培训的时候
某一天培训的早晨
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,744评论 25 707
  • 亭外牡丹晚 箜篌泣别离 别后相思催人老 朱颜辞镜岁月改 无人知 花期已至 故人归不归? 故人归不归 东篱门扉...
    半叁阅读 301评论 0 1
  • 特别巧,回复微博的时候我说:感觉您文笔很好,她就告诉了我这个书名:《情依老人谷》。说这是她的第一本书,可以读...
    寒叁肆_阅读 220评论 0 0
  • “我们终此一生,就是要摆脱他人的期待,找到真正的自己”是《无声告白》这本小说封面上的一句话。 小说开篇就写到主人公...
    伪悔到来阅读 221评论 0 0
  • 独寻春色去,踏歌入林深 尺寸沾露湿,片阴随我身 清啼相伴与,风送桃花簪 挥手自归去,下山逢故人
    尤利西斯阅读 198评论 0 0