团队是否应该使用同样的 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 的心得,如果有人愿意尝试,我很乐意帮他(她)。
编码规范
- 确保将tab换成4个空格
- 确保将文件的编码格式全部设置成:UTF-8
数据库开发规范
- 不可以在sql里用聚合函数。
- 开发时尽量用简单sql语句查数据。对数据的处理逻辑一律放到应用端(目前是java程序)。
- 除非不得已,不要在sql语句里进行多表关联查询。如果非要这么做,请联系项目负责人。
有关枚举的使用
- 代码逻辑里有用到某一字段判断的,这个字段如果有多种可能的情况,典型的例子就是状态值,如果还没有枚举,需要维护一个对应的枚举。
跟这个字段相关的代码不允许使用数字,一律要用枚举。使用方式:
1
2
3
4
5case XIA_DAN_GUAN_HUAI_DAO_FU:// 下单关怀(到付)
if (logisticsDetailTraceView.action.equals(LogisticsActionEnum.SENT_CITY.name()))
stepType = TradeSmsFlowStepEnum.tbPackageArriveTheBuyerCity.getCode();好处1:查询代码时,ctrl+鼠标点击,能看到枚举定义的地方,同时还可以看到整个枚举定义,对于理解代码和业务逻辑有很大的帮助。
- 好处2:增减枚举,修改枚举对应的值时,程序的业务逻辑代码不受影响。
- 其它有多种可能性的代码处理,也需要通过枚举来辅助。
查看表结构说明脚本
推荐使用MySQLWorkbench,去oracle官方下载最新,免费、开源、强大、官方支持。1
2
3
4
5
6
7
8
9
10
11
12
13SELECT
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父模块。
唯一的好处是可以统一管理依赖,其它相关项目不需要管理自己的依赖项。但是弊端也挺多的,如下:
- 会导致依赖混乱,如某一个依赖项只有其中一个模块要用到,结果依赖到这个父模块的子模块全部都要依赖它,某一天,这个依赖不再需要了,又不敢随便删除依赖,因为怕别的子模块需要,人手多了,随着时间推移,众多依赖项都不知道哪些是多余的。
- 让每个模块单独管理自己的依赖,在察觉到有多余依赖时,尽管删除,只要保证这个模块能编译通过即可。
- 方便重用某些公共模块,别的项目只要引入这个模块即可使用,而不用管理它的依赖项。