摘要:
从本篇文章开始我们从头开始学习如何创建一个图书租赁系统。在本篇文章中我们先来学习创建一个书籍信息的实体类,并且通过实体框架(EF Core)使用这个书籍实体类来处理书籍信息数据。EF Core是一个轻量化、可扩展、开源和跨平台的对象关系映射(ORM)框架,它简化了编写数据库访问的代码。EF Core支持多个数据库引擎。 阅读全文
摘要:
在学习本教程之前,我随便说两句,如果一直是在跟随微软的技术路线的话,应该记得当初微软用来跟flash打擂台的SilverLigth,也是一个富客户端的开发框架,现在不知道在哪个犄角旮旯里呆着。Blazor未来的钱景如何,暂时未知?本教程通过对微软提供的Blazor应用程序模板示例的学习,本文介绍了如何将计数器组件添加到其他页面,如何给计数器组件添加参数。 阅读全文
摘要:
在学习本教程之前,我随便说两句,如果一直是在跟随微软的技术路线的话,应该记得当初微软用来跟flash打擂台的SilverLigth,也是一个富客户端的开发框架,现在不知道在哪个犄角旮旯里呆着。Blazor未来的钱景如何,暂时未知?本教程通过对微软提供的Blazor应用程序模板示例的学习,来了解如何创建基于ASP.NET Core Blazor的应用程序。 阅读全文
摘要:
在学习本教程之前,我随便说两句,如果一直是在跟随微软的技术路线的话,应该记得当初微软用来跟flash打擂台的SilverLigth,也是一个富客户端的开发框架,现在不知道在哪个犄角旮旯里呆着。Blazor未来的钱景如何,暂时未知?本教程学习一下微软提供的Blazor应用程序模板示例,本文介绍如何创建基于ASP.NET Core Blazor的应用程序。 阅读全文
摘要:
在学习本教程之前,我随便说两句,如果一直是在跟随微软的技术路线的话,应该记得当初微软用来跟flash打擂台的SilverLigth,也是一个富客户端的开发框架,现在不知道在哪个犄角旮旯里呆着。Blazor未来的钱景如何,暂时未知?从目前来看Blazor还是要学习一下的。本教程首先通过一个微软提供的Blazor应用程序模板示例,来简单学习一下如何创建基于ASP.NET Core Blazor的Web应用程序。 阅读全文
摘要:
.NET 6 是微软统一.Net Core与.Net Framework 两大框架的第二个版本,微软在 .NET 5 中开始进行这两大框架的统一之路。
.NET 6 将作为长期支持 (LTS) 版本得到三年的支持。只有Visual Studio 2022(以及更高版本)支持 .NET 6。Visual Studio 2017/2019等版本都不支持.NET 6。
.NET 6可以生成运行在Linux、 Windows 和 macOS 上的单个文件的应用程序,这个应用程序是一个单文件二进制文件。单文件应用程序不再将任何核心运行时程序集提取到临时目录。 阅读全文
摘要:
经过前面八篇文章,五次的重构,对于这个充电宝计费项目的重构基本上已经完成。今天是这一系列的最后一篇文章,我们来讲讲如何对条件表达式进行重构,对于条件表达式的重构比较多的一种重构方式就是利用类的多态性进行重构。接下来我们就要使用该规则对PowerBank类中的GetAmount()与GetFrequentRenterPoints()函数进行重构。 阅读全文
摘要:
通过“代码重构与单元测试——“提取方法”重构(三) ”至“代码重构与单元测试——使用“以查询取代临时变量”再次对Statement()方法进行重构(七) ”这几篇文章的几次重构之后,再次对充电宝计费项目的代码进行全局性的观察与分析,我们发现在Rental类中的GetAmount()与GetFrequentRenterPoints()方法中的代码对PowerBank类有较大的依赖。因为这两个方法都只用到了Rental类中的RentedTime属性,而多次用到了PowerBank中的属性或字段。通过上面的分析,我们认为将这两个方法中的代码移到PowerBank类中显得更为合理。接下来,我们继续进行这两个方法的重构——将该部分代码移动到PowerBank类中。 阅读全文
摘要:
如果我们要将结果以HTML的形式进行组织的话,我们需要将Statement方法里面的代码进行复制,然后修改result变量的文本组织方式即可。这可能就是我们经常做的事情CTRL+C、CTRL+V。我想很多程序是这样来修改代码的,快速方便,使用这种方式修改代码,方法中的好多临时变量也都要被复制一份,这是完全相同的,这样就容易产生重复的代码。在这种情况下,我们需要使用“Replace Temp with Query”(已查询取代临时变量)的重构手法来取出上图所示的红框中的临时变量。 阅读全文
摘要:
经过之前的重构(见文章 代码重构与单元测试——“提取方法”重构(三) 与代码重构与单元测试——对方法的参数进行重构(五) ),我们从Statement()方法中提取了两个方法。观察这两个重构后的方法我们不难看出,这两个封装出来的新方法都只需要一个参数,这个参数就是Rental类的对象。也就是这两个方法都依赖于Rental类,而对该方法所在的当前类不太依赖。之所以会这种情况,是因为这两个方法放错了地方,因为这两个方法放在Customer类中但不依赖与Customer类而依赖于Rental类,那就足以说明这两个方法应该放在Rental类中。 阅读全文
摘要:
重构最重要的思想就是普通程序也能写出优秀的程序。重构一个项目的巨大工作量就是修改变量名、提取方法、抽取接口、修改方法参数等简单的工作。作为一个普通的程序就可以通过这些简单且容易完成的工作目标来提升自己的编码能力,加深自己对项目的认知,从而为最高层次的重构打下基础。在这个过程中发现Bug、修改Bug,这不是重构。优化不是重构。强化异常捕捉、增加预防性代码不是重构。让代码更容易测试不是重构——尽管重构能达到相同的效果。这些所有的事都是有益的。但这些都不是重构。 阅读全文
摘要:
程序开发过程中,写代码是为了实现需求。当我们的代码通过了编译,只是说明它的语法正确,功能能否实现则不能保证。 因此,当我们的某些功能代码完成后,为了检验其是否满足程序的需求。可以通过编写测试代码,模拟程序运行的过程,检验功能代码是否符合预期。单元测试就是开发者编写一小段代码,检验目标代码的功能是否符合预期。通常情况下,单元测试主要面向一些功能单一的模块进行。 阅读全文
摘要:
我们观察 代码重构与单元测试(一)文章中的共享充电宝计费代码中,发现Customer类的Statement ()方法首先需要进行重构。Statement ()方法最大的问题就是这个方法里边做的事情太多,我们第一步就是对其进行拆分。也就是使用重构中的“Extract Method”(提取方法)原则对该方法进行简化和拆分。将Statement ()中可以独立出来的代码进行提取。经过仔细分析后的,我们发现如下图中所框选的代码是一个完整的功能模块,其中框1中的代码是进行单价计算的功能,红框2中的代码是进行积分计算的功能,我们可以将这两块代码分别进行提取并封装成一个新的方法。在封装成新方法时,要给这个新的方法取一个恰当的方法名,见名知意。 阅读全文
摘要:
我们已经创建了充电宝计费项目,做为我们这次重构的遗留系统,为了验证我们每次重构的正确性,我们需要一个测试项目,对我们重构的代码进行测试。接下来我们来创建这个测试项目。遗留系统,程序员们为了快速完成需求和上线而写出了最基本的代码,而在功能的不断扩充过程中,以打补丁的方式对代码进行扩充,中间还会面临着开发人员的变更和离职,代码就会越来越臃肿,渐渐的变得难以维护。做遗留系统维护工作的程序员,清理代码是他们的日常工作之一。首要的任务是为此系统编写单元测试,搭建重构的测试保护网,并能够形成可读与可工作的测试用例文档。在发现遗留系统中代码的坏味道时,及时地对代码进行重构,并保证重构的小步前进,稳妥的对代码进行结构上的调整,每次调整完后都要进行测试,确保功能和以前一样,只是代码上看着不同。重构模式和现代化的 IDE里的重构工具使重构变得容易、安全和代价低廉。 阅读全文
摘要:
遗留系统,程序员们为了快速完成需求和上线而写出了最基本的代码,而在功能的不断扩充过程中,以打补丁的方式对代码进行扩充,中间还会面临着开发人员的变更和离职。逐渐的,代码就会越来越臃肿,渐渐的变得难以维护。程序员,特别是做遗留系统维护工作的程序员,清理代码是他们的日常工作之一。这是基本工作,是必须要做的。首要的任务是为此系统编写单元测试,搭建重构的测试保护网,并能够形成可读与可工作的测试用例文档。在发现遗留系统中代码的坏味道时,及时地对代码进行重构,并保证重构的小步前进,小规模的、独立的、稳妥的对代码进行结构上的调整,每次调整完后都要进行测试,确保你没有改变代码的行为特征——功能和以前一样,只是代码上看着不同。重构模式和现代化的 IDE里的重构工具使重构变得容易、安全和代价低廉。 阅读全文
摘要:
在上篇文章( 在Visual Studio 中使用git——同步到远程服务器-上(十一) )中我们已经在码云上创建了项目并在Visual Studio 2019中设置了码云上的项目地址。在这一篇文章中我们使用Visual Studio 2019(16.9)将项目推送到码云(gitee)上我们创建的项目上去。 阅读全文
摘要:
我们使用Visual Studio 2019(16.9)将项目推送到码云(gitee)上我们创建的项目上去。关于Visual Studio 2015/2017如何与远程服务器同步,请参考网上的相关文章。我所知道的是要安装一个码云插件(Gitee Extension for Visual Studio)。在这篇文章中我们将学习如何在码云(gitee)上创建项目,如何在Visual Studio 2019(16.9)中设置项目的远程仓库地址。 阅读全文
摘要:
我们通过实际的项目来演示如何在Visual Studio 中通过git的可视化版本对Git的进行管理。在本篇文章中,你将会学习如何创建和删除新的标签。主要以Visual Studio 2017为主。 阅读全文
摘要:
我们通过实际的项目来演示如何在Visual Studio 中通过git的可视化版本对Git的进行管理。在git中,分支非常简单易用,建议经常创建分支。另外在bug修复等方面,git的分支功能也非常方便易用。主要介绍了分支的删除与分支的变基功能。主要以Visual Studio 2017为主。 阅读全文
摘要:
我们通过实际的项目来演示如何在Visual Studio 中通过git的可视化版本对Git的进行管理。在git中,分支非常简单易用,建议经常创建分支。比如,你有一个实验性的想法,可以创建一个分支去测试,完全不影响正式的代码。另外在bug修复等方面,git的分支功能也非常方便易用。可以说,分支功能是git最棒的功能之一。主要以Visual Studio 2017为主。 阅读全文