大家好,欢迎来到IT知识分享网。
一种好的编码规则,能提高工作效率。
在软件编程领域内,“驼峰”式命名规则是首选方式,最早来源于Perl语言编程的畅销书《program Perl》(oRelly出版)的封面图片正是一匹骆驼,故而得名。
但是这种命名规则是最不高效的方式,大小写问题就是因为这种命名规则导致的,有时还被带到沟里去了。所以并不被其他一部分程序员提倡,因为先发原因,所以被大部分公司和开发者使用,习惯的力量太强大了。
下面编码规则,在实践中证明,可以极大的提高效率:
变量名 废弃“驼峰”命名方式,在能用小写的地方坚决不用大写,解决大小写的烦扰。
严禁“缩没了”的方式的命名:比如:sgrj: 开工日期,应当命名为:startworkdate 或 kaigongriqi
一、最大可能地避免手敲代码,能极大地提高效率。
二、modle层的变量 完全以数据库表为参考物,提前检查表的字段注释不规范等。
三、在编辑器里对象名后 点号 弹窗里出来的get/set方法名全是小写的,一眼就知道是自己人的业务对象代码。
废弃驼峰式的命名方式后,就很容易用某种自动化的脚本来生成基础代码了(见本文最后的用数据查询来实现的脚本)。如下面动图所示,能极大地提高工作效率。
Model类的制作
Response类的制作
一种是为了注释而注释, 不接地气;不方便代码阅读; 针对 这个弊端,本文建议一种新的编码注释风格。
Model类里的注释
左边为 不接地气的 代码注释 风格:每个字段类的变量,占据多行,各行间距都一样,没有 “组”的概念。阅读代码时,需要鼠标滚屏,才能到达定位的字段上。
右边为 “接地气”的编码注释方式:每个字段类的变量,占据一行,注释用//方式写在最后,相关逻辑的变量字段写在一起,为一 “组”。几乎可以一屏展示所有的业务字段,无需鼠标滚屏;可以一目十行的扫视代码。
Response类里的注释
左边为 不接地气的 代码注释 风格:每个字段类的变量,占据多行,各行间距都一样,没有 “组”的概念。阅读代码时,需要鼠标滚屏,才能到达定位的字段上。
右边为 “接地气”的编码注释方式:每个字段类的变量占据一行,注释用直接复用ApiModelPeroperty里的描述,相关逻辑的变量字段写在一起,为一 “组”。几乎可以一屏展示所有的业务字段,无需鼠标滚屏。尤其在和其他部件联调时,非常方便,相关字段截图时可以在一屏里,发给对方参考。
Mapper.xml里的SQL
左边为 不接地气的 编写风格:一个条件里,占据几行,阅读时感觉太跳跃
右边为 “接地气”的编码方式:一个条件只占一行,阅读时可以一目十行的扫视,和阅读正常SQL没区别。
附件:(一种使用查询数据库的方式来生成基础代码),使用方式见上面的动图
SELECT CONCAT('@TableField("',COLUMN_NAME,'") private ',CASE WHEN data_type='varchar' THEN 'String 'WHEN data_type='datetime' THEN 'Date 'WHEN data_type='int' THEN 'Integer 'WHEN data_type='decimal' THEN 'BigDecimal 'WHEN data_type='char' THEN 'String 'WHEN data_type='longtext' THEN 'String ' WHEN data_type='text' THEN 'String 'WHEN data_type='char' THEN 'String ' END,REPLACE(LOWER(column_name),'_',''),';//',column_comment) AS '纯Model类' /* CONCAT('@ApiModelProperty(value = "',column_comment,'")', ' private ',CASE WHEN data_type='varchar' THEN 'String 'WHEN data_type='datetime' THEN 'Date 'WHEN data_type='int' THEN 'Integer 'WHEN data_type='decimal' THEN 'BigDecimal 'WHEN data_type='char' THEN 'String 'WHEN data_type='longtext' THEN 'String 'WHEN data_type='char' THEN 'String ' END,REPLACE(LOWER(column_name),'_',''),';//',column_comment) AS 'Response类' concat(',#{m.',REPLACE(LOWER(column_name),'_',''),'}') as 'Mapper里的Insert里的Values', concat(',',COLUMN_NAME,' ') as 'Mapper里的Insert里的Columns', CONCAT(' ,t.', column_name, ' as ', REPLACE(LOWER(column_name),'_','') ) AS 'Mapper里的Select的列名', CONCAT(' <if test="', REPLACE(LOWER(column_name),'_',''), ' != null and ', REPLACE(LOWER(column_name),'_','') ,' != '''' "> and ',COLUMN_NAME,' = #{',REPLACE(LOWER(column_name),'_',''),'} ' ,' </if>') AS 'Mapper里的Select语句的Where', CONCAT(' <result column="', LOWER(column_name), '" property="', REPLACE(LOWER(column_name),'_','') ,'" />') AS 'Mapper里的resultMap映射',CONCAT(',t.',COLUMN_NAME,' AS ' ,REPLACE(LOWER(column_name),'_','')) AS 'Mapper里的Base_Columns',*/ FROM information_schema.COLUMNS WHERE table_name='这里输入数据表名' AND table_schema='这里输入数据库名';
#头条创作挑战赛##软件编程##编程##编程语言##分享编程心得##分享编程技巧#
本文为今日头条独家原创稿件。欢迎大家留言、点赞、分享、转发!
————结束————
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/163602.html