怎么成为更好的程序员?


这篇文章将为大家详细讲解有关怎么成为更好的程序员?,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。阅读本文并了解如何使用具有功能组合的声明性代码成为更好的程序员。在许多情况下,具有功能组合的声明性解决方案提供优于传统命令式代码的代码度。阅读本文并了解如何使用具有功能组合的声明性代码成为更好的程序员。在本文中,我们将仔细研究三个问题示例,并研究两种不同的技术(命令式和声明性)来解决这些问题。本文中的所有源代码都是开源的,可从获取。最后,我们还将看到本文的学习如何应用于数据库应用程序领域。我们将使用Speedment Stream作为ORM工具,因为它提供了与数据库中的表,视图和连接相对应的标准Java Streams,并支持声明性构造。实际上有无数个候选示例可用于代码度量评估。在本文中,我选择了开发人员在日常工作可能遇到的三个常见问题:迭代数组并执行计算并行聚合值使用分页实现REST接口正如本文开头所描述的,我们将使用这两种编码技术解决问题:一个命令式的解决方案,我们使用带有for循环和显式可变状态的传统代码样例。声明式解决方案,其中我们组合各种函数以形成解决问题的高阶复合函数,通常使用java.util.stream.Stream或其变体。然而,我们的想法是使用SonarQube(此处为SonarQube Community Edition,Ver 香港云主机sion 7.7)将静态代码分析应用于不同的解决方案,以便我们可以为问题/解决方案组合推导出有用且标准化的代码度量标准。然后将比较这些指标。在本文中,我们将使用以下代码度量标准:“LOC”表示“代码行”,是代码中非空行的数量。是代码中的语句总数。每个代码行上可能有零到多个语句。表示代码的复杂性,并且是通过源代码程序的线性独立路径数量的定量度量。例如,单个“if”子句在代码中显示两条单独的路径。在维基百科上阅读更多内容。> SonarCube声称:“认知复杂性改变了使用数学模型来评估软件可维护性的实践。它从Cyclomatic Complexity设定的先例开始,但是使用人为判断来评估结构应该如何计算,并决定应该将什么添加到模型中作为一个整体结果,它产生了方法复杂性分数,这使得程序员对可维护性模型的评估比以前更公平。“在SonarCube自己的页面上可以阅读更多内容。通常情况下,需要设想一个解决方案,其中这些指标很小而不是很大。对于记录,应该注意下面设计的任何解决方案只是解决任何给定问题的一种方法。如果您知道更好的解决方案,请随时通过我们从简单开始。此问题示例的对象是计算int数组中元素的总和,并将结果返回为long。以下接口定义了问题:以下解决方案使用命令式技术实现SumArray问题:这是一个使用声明性技术实现SumArray的解决方案:请注意,IntStream :: sum只返回一个int,因此,我们必须加入中间操作mapToLong()。SonarQube提供以下分析:SumArray的代码度量标准如下表所示(通常更低):这是它在图表中的值(通常更低):这个问题示例的对象是将Person对象分组到不同的桶中,其中每个桶构成一个人的出生年份和一个人工作的国家的唯一组合。对于每个组,应计算平均工资。聚合应使用公共ForkJoin池并行计算。这是(不可变的)Person类:我们还定义了另一个名为YearCountry的不可变类,把它作为分组键:定义了这两个类之后,我们现在可以通过接口定义此问题示例:实现GroupingBy示例问题的命令式解决方案并非易事。这是问题的一个解决方案:这是一个使用声明性构造实现GroupingBy的解决方案:在上面的代码中,我使用了一些来自Collectors类的静态导入(例如Collectors :: groupingBy)。这不会影响代码指标。SonarQube提供以下分析:GroupingBy的代码度量标准如下表所示(通常更低):这是它在图表中的值(通常更低):在该示例性问题中,我们将为Person对象提供分页服务。出现在页面上的Persons必须满足某些(任意)条件,并按特定顺序排序。该页面将作为不可修改的Person对象列表返回。这是一个解决问题的接口:页面的大小在名为RestUtil的单独工具程序类中:SonarQube提供以下分析:Rest的代码度量标准如下表所示(通常更低):这是它在图表中的值(通常更低):上面的例子是用Java 8编写的。使用Java 11,我们可以使用LVTI(局部变量类型推断)缩短声明性代码。这会使我们的代码更短,但不会影响代码指标。与Java 8相比,Java 11包含一些新的收集器。例如,Collectors.toUnmodifiableList(),它将使我们的声明性Rest解决方案更短:同样,这不会影响代码指标。三个示例性问题的平均代码度量产生以下结果(通常更低):鉴于本文中的输入要求,当我们从命令式构造到声明式构造时,所有代码度量标准都有显着改进。为了在数据库应用程序中获得声明性构造的好处,我们使用了Speedment Stream。 Speedment Stream是一个基于流的Java ORM工具,可以将任何数据库表/视图/连接转换为Java流,从而允许您在数据库应用程序中应用声明性技能。您的数据库应用程序代码将变得更好。事实上,针对数据库的Speedment和Spring Boot的分页REST解决方案可能表达如下:Manager persons由Speedment提供,并构成数据库表“Person”的句柄,可以通过Spring使用@AutoWired注解。关于“怎么成为更好的程序员?”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

相关推荐: 电脑主机运行正常显示器黑屏如何解决

今天小编给大家分享一下电脑主机运行正常显示 香港云主机器黑屏如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.首先重新连接显示器接线或者…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/25 16:06
下一篇 07/25 16:06

相关推荐