java.util.stream.Stream#filter 是一个强大的方法,允许开发者对数据流进行筛选。然而,从方法名本身有歧义,这让我们无法直观地知道哪些数据会被保留:是true被过滤掉,还是保留?
这就需要我们去看API文档,如果能自己写demo,然后Run一下,就会记忆得更清楚。
在没Run之前,你能确定是pass还是fail呢?
剖析:这个java.util.stream.Stream#filter()有歧义,到底是满足什么条件才能留下呢?
改进建议:
使用java.util.stream.Stream#filterIfTrue来替代java.util.stream.Stream#filter
java.util.Collections#sort 方法用于对集合进行排序,但方法名本身并没有明确指出是升序还是降序。这可能导致开发者在使用时产生疑惑,尤其是当集合元素的自然排序不是预期的顺序时。
在没有运行前,你能通过上面的代码,确定是passed还是fail呢?
Run:
当然一旦掌握了这种技能,填了坑,就会越来越“资深”。
不过,Java8中已经fix: dataList.sort(Comparator.reverseOrder());//降序 dataList.sort(Comparator.naturalOrder());//升序
Run:
java.util.concurrent.ThreadPoolExecutor#shutdownNow
方法用于立即关闭线程池,并尝试停止所有正在执行的任务。然而,方法名并没有直接告诉我们它还会返回一个包含未执行任务的列表。
执行结果:
可以看到:在执行 shutdownNow() 方法之后,首先会给所有线程池中的线程发送 interrupt 中断信号,尝试中断这些任务的执行,然后会将任务队列中正在等待的所有任务转移到一个 List 中并返回。
改进建议:
在调用此方法时,添加注释或使用更明确的命名,以避免混淆。
ThreadPoolExecutor#shutdownAndInterruptRunningThTaskNowAndRemoveAllWaitingTaskAndReturn()来替代ThreadPoolExecutor#shutdownNow
方法名是不是有点长了?是的,但命名不怕长,就怕一看就糊涂。
良好的方法命名是代码可读性的关键。一个见名知意的方法名可以让其他开发者快速理解其功能和行为。此外,遵循单一职责原则,确保一个方法只做一件事,也是提高代码清晰度的有效手段。通过这些实践,我们可以减少误解,提高代码的可维护性和可读性。
“ 任何傻瓜都会编写计算机能理解的代码。 好的程序员能够编写人能够理解的代码。 ” 好代码的要求: 1、有意义的命名。 “见名知意”,代码要在字面上表达其含义,字面编程 2、单一职责。 每个函数、类、模块都专注于做一件事, 且这些函数、类、方法、实体等尽可能少 唐成,公众号:的数字化之路如果代码有段位,来看看你是什么段位?青铜?白银?还是黄金?【有源码】
线程池了解吗?说说线程池中 shutdown和shutdownNow的区别?
长开了呀
不知道从6月初的那一天开始,看到楼梯不想爬了,也不知道是因为走廊黑还是因为阶梯高