欢迎关注方志朋的博客,回复”666“获面试宝典

把自己平时写代码的习惯跟大家分享一下

1.定义配置文件信息

有时候我们为了统一管理会把一些变量放到yml配置文件中

例如

用 @ConfigurationProperties 代替@Value

使用方法

定义对应字段的实体

@Data
// 指定前缀
@ConfigurationProperties(prefix = "developer")
@Component
public class DeveloperProperty {private String name;private String website;private String qq;private String phoneNumber;
}

使用时注入这个bean

@RestController
@RequiredArgsConstructor
public class PropertyController {final DeveloperProperty developerProperty;@GetMapping("/property")public Object index() {return developerProperty.getName();}
}

2. 用@RequiredArgsConstructor代替@Autowired

我们都知道注入一个bean有三种方式哦(set注入, 构造器注入, 注解注入),spring推荐我们使用构造器的方式注入Bean

我们来看看上段代码编译完之后的样子

RequiredArgsConstructor:lombok提供

3.代码模块化

阿里巴巴Java开发手册中说到每个方法的代码不要超过50行(我没记错的话)

在实际的开发中我们要善于拆分自己的接口或方法, 做到一个方法只处理一种逻辑, 说不定以后某个功能就用到了, 拿来即用

4. 抛异常而不是返回

在写业务代码的时候,经常会根据不同的结果返回不同的信息,尽量减少返回,会显得代码比较乱

反例

正例

5. 减少不必要的db

尽可能的减少对数据库的查询

举例子

删除一个服务(已下架或未上架的才能删除)

之前有看别人写的代码,会先根据id查询该记录,然后做一些判断

反例

正例

6. 不要返回null

反例

正例

别处调用方法时,避免不必要的空指针

7. if else

不要太多了if else if

可以试试策略模式代替

8. 减少controller业务代码

业务代码尽量放到service层进行处理,后期维护起来也好操作而且美观

反例

正例

9. 利用好Idea

目前为止市面上的企业基本都用idea作为开发工具了吧

举一个小例子

idea会对我们的代码进行判断,提出合理的建议

例如:

它推荐我们用lanbda的形式代替

点击replace

10. 阅读源码

一定要养成阅读源码的好习惯包括优秀的开源项目GitHub上stars:>1000, 会从中学好好多知识包括其对代码的设计思想以及高级API,面试加分(好多面试官习惯问源码相关的知识)

11. 设计模式

23种设计模式,要尝试代码中运用设计模式思想,写出的代码即规范又美观还高大上哈哈。

12. 拥抱新知识

像我们这种工作年限少的程序员,我觉得要多学习自己认知之外的知识,不能每天crud,有机会就多用用有点难度的知识,没有机会(项目较传统),可以自己下班多些相关demo练习

13. 基础问题

map遍历

HashMap<String, String> map = new HashMap<>();map.put("name", "du");for (String key : map.keySet()) {String value = map.get(key);}map.forEach((k, v) -> {});// 推荐for (Map.Entry<String, String> entry : map.entrySet()) {}

optional 判空

//获取子目录列表public List<CatalogueTreeNode> getChild(String pid) {if (V.isEmpty(pid)) {pid = BasicDic.TEMPORARY_DIRECTORY_ROOT;}CatalogueTreeNode node = treeNodeMap.get(pid);return Optional.ofNullable(node).map(CatalogueTreeNode::getChild).orElse(Collections.emptyList());}

递归

大数据量的递归时,避免在递归方法里new对象,可以试试把对象当作方法参数进行传递使用

注释

类 接口方法 注解 较复杂的方法 注释都要写而且要写清楚, 有时候写注释不是给别人看的 而是给自己看的

14. 判断元素是否存在

hashSet而不是list

list判断一个元素是否存在的代码

ArrayList<String> list = new ArrayList<>();// 判断a是否在list中for (int i = 0; i < list.size(); i++)if ("a".equals(elementData[i]))return i;

由此可见其复杂度为On

而hashSet底层采用hashMap作为数据结构进行存储,元素都放到map的key(即链表中)

HashSet<String> set = new HashSet<>();// 判断a是否在set中int index = hash(a);return getNode(index) != null

由此可见其复杂度为O1

来源:Java团长

热门内容:
  • Maven官宣:干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂!

  • 面试官问:生成订单30分钟未支付,则自动取消,该怎么实现?

  • 使用雪花id或uuid作为Mysql主键,被老板怼了一顿!

  • 面试官:如果要存ip地址,用什么数据类型比较好

  • 干掉visio,这个画图神器真的绝了!!!

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

我同事说我写代码像写诗相关推荐

  1. 程序员写代码要写注释吗?写你就输了

    前言:在职业发展道路上,需要不断提升自己,需要学习资源的,一起学习交流的欢迎加群[443128517],小编准备了学习视频,学习线路,自学书籍,职业发展视频.也可以加美女老师七七的微信.二维码放在下面 ...

  2. 《ChatGPT》自动写代码、写作文,使用教程来了

    文章目录 注册 开始使用ChatGPT 基本问答 自动写代码 写作文 视频演示讲解 注册 短信接收:https://sms-activate.org/cn/buy 一美元: 充好后打开,选择印度: 下 ...

  3. 写代码犹如写文章: “大师级程序员把系统当故事来讲,而不是当做程序来写” | 如何架构设计复杂业务系统? 如何写复杂业务代码?

    写代码犹如写文章: "大师级程序员把系统当故事来讲,而不是当做程序来写" | 如何架构设计复杂业务系统? 如何写复杂业务代码? Kotlin 开发者社区 "大师级程序员把 ...

  4. 看完这一篇后我同事说我写代码像写诗

    目录 1.定义配置文件信息 2. 用@RequiredArgsConstructor代替@Autowired 3.代码模块化 4. 抛异常而不是返回 4. 减少不必要的db 5. 不要返回null 6 ...

  5. php说明代码怎么写,代码怎么写 - 起步 - PHP基础 - KK的小故事

    起步 - 代码怎么写 ¶ 作者:KK 发表日期:2016.3.9 要写PHP代码就需要建立.php后缀的文件,并且在文件里要以<?php 具体代码 ?>这样的形式来书写PHP代码 我们在网 ...

  6. python程序写诗_万能的 LSTM:可以写代码可以写诗还能做文本情感分析

    LSTM,全称为「长短期记忆」,是一种「时间递归神经网络」(RNN).LSTM 适合于处理和预测时间序列中间隔和延迟非常长的重要事件. 通俗来讲,LSTM 非常适合用来预测与时间相关的数据,在文本处理 ...

  7. Laf: 云开发中的战斗机,让你写代码像写博客一样简单

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 各位云原生搬砖师 and PPT 架构师,你们有没有想过像写文章一样方便地写代码呢? 怎样才能像写文章一样写代码? ...

  8. ChatGPT横空出世|超强大功能写代码、写情书、写文章、做设计火爆全网

    会被人工智能替代的行业 不是孩子未来的发展方向 因为我们在有限的时间里 无法穷尽对技术的学习 那么人工智能无法替代的是什么? 最近火热的ChatGPT,是美国人工智能研究实验室OpenAI开发的一种全 ...

  9. Replit的野心,让Web3的创作者写代码像写文章一样简单

    Replit 是一个创新产品,我们可以将其简单理解为编程领域的 Figma 或者 Google Docs,也就是基于浏览器的云端协同开发平台. 通过它,我们不需要在本地安装.配置任何软件,就可以非常简 ...

最新文章

  1. Go语言写的解析器(支持json,linq,sql,net,http等)
  2. 创建linux目录,Linux目录的创建方法
  3. (转)所有iOS设备的屏幕分辨率
  4. sublime Text3 设置多个浏览器预览
  5. OpenGL 文本渲染Text Rendering
  6. 02/03_Pytorch安装、Conda安装Pythorch,换源、pytorch官网、验证、安装jupyter、卸载、安装、启动jupyter、配置Jupyter notebook、使用
  7. Maven开发web项目的搭建
  8. Github博客地址
  9. 在db2数据库上模拟死锁场景 还是z上的
  10. 浪潮服务器2016销售额,Gartner:2016年前三季度浪潮服务器销售额中国第一
  11. Luogu P1164小A点菜
  12. 一个优秀的公司如何才能成为一个卓越的公司?
  13. Android系统源代码情景分析
  14. 数据库系统:NoSQL与SQL的区别
  15. leetcode-884-两句话中的不常见单词
  16. 有关费尔防火墙一书TDI代码“网上邻居”不能访问功能的修复
  17. 计算机中冰点还原快捷键,冰点还原软件如何使用,教您如何使用冰点还原软件...
  18. Excel知识技能汇总
  19. HandBrake 开源视频转码器、编码转换器、格式转换器
  20. 云计算技术与应用 - 了解认识云计算

热门文章

  1. 110道 Redis面试题及答案(最新整理)
  2. 为什么java退出全屏_Java全屏模式与退出全屏:
  3. 关于《强化狼群等级制度的灰狼优化算法》的问题邮件回复
  4. 2018-3-28 智能算法-Swarm Intelligence
  5. 2.27 MapReduce Shuffle过程如何在Job中进行设置
  6. linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):
  7. 电热水器技术性能指标
  8. JS 实现可停顿的垂直滚动
  9. Dubbo 入门实例 本地伪集群测试Demo
  10. 深入解析CSS样式层叠权重值