###前言 20160709
踏上扬州,20170826
奔向武汉。在过去的1
个半月实习前的培训中,有得有失。css
在写这一篇文章的时候,我极力想摆脱实习报告的套路,想要言简意赅。少写一些空乏的杂事,多一些知识的干货。在通过扬州的1
个半的培训中。我知道了本身的路,我不肯本身的将来随风随浪,漂浪东西,亲像船无港。html
我是一名实习的java
码农,可是我但愿将来的我是XX
产品的开发者。在过去扬州的培训中,分别学习了java
和.Net
。因此我会后续的5
篇实习报告中(加上这一篇,一共是6
篇)去回顾我过去学习的知识。温故而知新,能够为师矣。java
我以为有一句话,说的挺不错的。”学而不思则罔,思而不学则殆”。这很符合程序员的学习方法。一样是相同经验的程序员,有的程序员技术烂,有的程序员技术很厉害。合理的总结过去学习的知识和触类旁通无非能够增长学习的效率,我以为这是优秀的程序员和普通的程序员之间的分水岭。node
###Daily Report 在扬州实习中,咱们天天都要写一篇日报去简要的描述今天作了什么,完成的进度是什么,遇到了什么问题,能够提出本身对课程的意见,明天应该完成什么。程序员
可是听到这个要求,我心里的想法:"我曹,这么傻逼,彻底画蛇添足,没有任何意义啊。"如今的我发现当时的我真的很无知。并且daily report
不是用中文写,是全英文。sql
具体的格式精确到每个空格和标点符号,标题要加粗,整个字体是用Arial
字体,字体的size
是10pt
,标题和内容之间要空一格。标题符号要用半角,不能用全角。写英文要注意时态,专业术语要大小写。数据库
就是这么简单的daily report
,咱们培训的60
我的第一天没有人能写出符合要求的daily report
,就算trainer给咱们天天讲格式要求。就是这样的前提下,过去了一个星期,60
我的中寥寥无几能写出符合要求的report
。后端
到如今为止,我都不能保证我写的英文句子知足时态,大小写,语句结构没问题等这些要求,我也只会写一些to do
, learn
, study
, understand
, finish
这些简单的语句去描述我当天作了什么,由于英语太烂了,写复杂的句子免不了出错,因此就写很简单的句子。设计模式
记得trainer跟咱们说过:"大家连这么简单的daily report
都完成不了,还期望大家写出质量高的code
"。如今想一想,说的还真没错。细节决定成败。bash
###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
个点,css
和js
也是具体到空几个点。if
和while
等语句前面要空一行, return x,
若是x
为空的话,那么前面不用空一行,若是不为空的话,那么要空一行。
css
和js
的命名规则是a-b-c
, html
和jsp
的命名规则是a_b_c
, hard code
一概提取到Constant
类中,要进行分块。相同的代码出现2
次,要考虑到设计模式,进行抽取分离,达到公用。
涉及到数据库的,尽可能不要用sql
语句,要使用存储过程。model
层的代码字段要和数据库表的列表一一对应起来,数据库命名规范a_b_c
。html
和jsp
标签要闭合,css
和js
抽取到js
文件夹下面的文件中。
前台代码和后端代码进行动静分离。前台只显示静态的标签,相关逻辑render to desgin
放到js
中去完成。画前台UI
尽可能不要使用position:relative
或者absolute
,这一点我其实也不知道为何,哈哈哈哈。
相关的Coding Style
就说到这里了,由于实在太多了,要知道Coding Style
文档有中涉及到的规范不少,这里的篇幅说不完!!!。
未完待续,下一篇待续。附上3张在扬州实习图