如题

团队是否应该使用同样的 IDE,编码效率

  • 作为一个资深的 windows 使用者和电脑重度使用者,最关键的,是每天跟代码打交道,每天需要看代码,修改代码,同时还需要聚精会神的思考,所以,我们不要让操作键盘和鼠标影响我们思考从而降低工作效率。
  • 那么,盲打肯定是必须的,不光盲打,而且还要快。正确的姿势是什么呢?双手放到键盘上,目视屏幕,很多操作都是通过键盘的快捷键完成,比如 windows 的日常操作,切换软件界面用 Alt+Tab,打开我的电脑用 win+E,创建新文件夹用 Ctrl+Shift+n 等等。
  • coding,更是要讲究高效,麻利,那么,正确使用 IDE 的姿势,少不了快捷键的熟练使用,代码自动完成这些应该都不在话下才对。比如想要输入 【System.out.println(“ something “);】,只需要输入 sout 之后,再敲 Ctrl+空格,然后会出现选择框,默认第一项就是我们想要的,只需要再敲回车就 OK 了。IDEA 更快,输入 so 然后默认第一项就是,之后回车就 OK 了。
  • 那么,如果你跟我一样,自己最常用的是 IDEA,而团队里有成员在用 sts,时不时的有下属有问题需要你去解决,你又不能硬性的要求别人都使用 IDEA,这样因为 IDE 的不同,会非常影响交流效果,因为你去那座位上看代码,会很不习惯,往往会影响你思考甚至可能会影响到你的信心。但是如果你也用跟他同样的 IDE 的话,就好办了,你可以用你自己的电脑跟他交流,这样,打造一个你自己熟悉的跟同事一样的 IDE 环境就显得非常重要了。
  • 说得有点多哈,其实,在一个团队里,要求都用同样的 IDE 会带来很多方便和避免很多不必要的麻烦。但是这个要求,实施起来有点难度,对于使用怪了 Eclipse 的,要求用 IDEA,对他(她)来说是一件非常痛苦的事情,所以,在我的团队里,可以选自己熟悉的,不过,我会分享使用 IDEA 的心得,如果有人愿意尝试,我很乐意帮他(她)。

编码规范

  1. 确保将tab换成4个空格
  2. 确保将文件的编码格式全部设置成:UTF-8
  3. 用eclipse,请导入群文件:eclise_code_style.xml
  4. 用idea,请导入群文件:idea_settings_code_style.jar
  5. 请仔细阅读群文件:我购美_Java编码规范(PHP参考).docx

数据库开发规范

  1. 不可以在sql里用聚合函数。
  2. 开发时尽量用简单sql语句查数据。对数据的处理逻辑一律放到应用端(目前是java程序)。
  3. 除非不得已,不要在sql语句里进行多表关联查询。如果非要这么做,请联系项目负责人。

有关枚举的使用

  1. 代码逻辑里有用到某一字段判断的,这个字段如果有多种可能的情况,典型的例子就是状态值,如果还没有枚举,需要维护一个对应的枚举。
  2. 跟这个字段相关的代码不允许使用数字,一律要用枚举。使用方式:

    1
    2
    3
    4
    5
    case XIA_DAN_GUAN_HUAI_DAO_FU:// 下单关怀(到付)

    if (logisticsDetailTraceView.action.equals(LogisticsActionEnum.SENT_CITY.name()))

    stepType = TradeSmsFlowStepEnum.tbPackageArriveTheBuyerCity.getCode();
  3. 好处1:查询代码时,ctrl+鼠标点击,能看到枚举定义的地方,同时还可以看到整个枚举定义,对于理解代码和业务逻辑有很大的帮助。

  4. 好处2:增减枚举,修改枚举对应的值时,程序的业务逻辑代码不受影响。
  5. 其它有多种可能性的代码处理,也需要通过枚举来辅助。

查看表结构说明脚本

推荐使用MySQLWorkbench,去oracle官方下载最新,免费、开源、强大、官方支持。

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
column_name 字段名,
column_type 字段类型,
is_nullable 可否为空,
column_default 默认值,
column_comment 说明
FROM
information_schema.columns
WHERE
table_name = 'tableName'
AND table_schema = 'SchemaName'
-- and column_name = 'is_primary'
;

好记性不如烂笔头->最佳实践

建议:

1
2
3
4
5
6
/*
有疑问的,【todo ****】
需要很快解决的,【todo ***】
不影响系统运行,不影响逻辑,优化部分,【todo **】
不确定是否需要优化但逻辑正确的,【todo *】
*/

在上线前,全项目搜索需要很快解决的代码。

1
2
3
4
5
        //临时测试 测试完恢复 todo ***
List<TopTmcMessageQueueView> NeedSyncTradeMessageQueueViews =messageQueueViews;

// List<TopTmcMessageQueueView> NeedSyncTradeMessageQueueViews = messageQueueViews.stream().
// filter(o->CommonService.topicsNeedSyncTrade.contains(o.getTopicEnum())).collect(Collectors.toList());

上面的条件不再适用的时候,将todo 删除掉

1
List<TopTmcMessageQueueView> NeedSyncTradeMessageQueueViews = messageQueueViews.stream().filter(o->CommonService.topicsNeedSyncTrade.contains(o.getTopicEnum())).collect(Collectors.toList());

多模块,添加pom父模块。

唯一的好处是可以统一管理依赖,其它相关项目不需要管理自己的依赖项。但是弊端也挺多的,如下:

  1. 会导致依赖混乱,如某一个依赖项只有其中一个模块要用到,结果依赖到这个父模块的子模块全部都要依赖它,某一天,这个依赖不再需要了,又不敢随便删除依赖,因为怕别的子模块需要,人手多了,随着时间推移,众多依赖项都不知道哪些是多余的。
  2. 让每个模块单独管理自己的依赖,在察觉到有多余依赖时,尽管删除,只要保证这个模块能编译通过即可。
  3. 方便重用某些公共模块,别的项目只要引入这个模块即可使用,而不用管理它的依赖项。