重构之路 柳暗花明

2024-05-25 16:18
文章标签 重构 柳暗花明

本文主要是介绍重构之路 柳暗花明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

         经过一段时间的学习,查阅各种资料,询问高手,对于机房收费系统的代码编写渐入佳境,同时在遇到问题后也不再茫然失措,而是静下心来去找到问题的根源,进而找到解决的办法。

         在使用泛型集合作为函数的返回值的实践中,遇到了一个很普遍的问题,那就是在将DataTable类型的返回结果转换为以实体类型为集合元素的泛型集合List的过程中,由于数据类型的转换导致的错误,具体如下图所示:

         我们可以看到错误提示说的是Decimal类型的对象无法转换为Double类型,一开始我并知道这个问题的原因,点击“获取此异常的常规帮助”,可以看到下面的提示:

        

         看了半天还是没能知道什么意思,于是就找用过泛型集合的人问了问是怎么个情况,人家说是在向实体类型转换的时候,由于数据类型不一致导致的,也没说到底在哪出了问题,我想既然是decimal无法转换为double类型,那么就不用double类型的属性,因此找到本次要转换的目标实体类型QueryBalanceEntity,查看里面各个属性的数据类型,发现只有属性Balance是double类型的,于是将其改成了decimal类型,然后从新编译,问题解决了,但是紧接着又发现了另一个异常,如下图:

        

         返回结果中少了一个数据项,使用断点逐步调试,没能发现问题的根源,数据库中明明有数据,但是却显示不出来,在将返回结果传递到U层的过程中有一个将DataTable的换成List的步骤,因此我要看看班级的信息是否在Datatable中,所以在代码中加了一句输出DataTable中相应值的语句如下:

         结果班级的信息的确是返回来了,但是没有显示出来,肯定是泛型集合的使用出了问题,因此就打开数据库进行查看,发现实体类型QueryBalanceEntity中的属性班级的名称是ClassName,而在数据库中字段名称是class,根本不一致,鉴于class在编程语言中是关键字,所以就把数据库的字段名称改成了classname,如下:

        

         这样数据库中的字段和实体类中的属性名称对应起来,才可以顺利将Datatable类型的的数据结构转换为List类型的数据结构,方便使用。

         对于泛型集合的使用,并没有过多的去研究,而是直接将转换函数拷贝过来,问清楚参数的意义和使用方法,即可在系统中使用,这是最快的学习方式,在使用中学习,而不是先研究半天理论,完了之后还是不知道怎么使用,但是在使用完了之后要回过头了去总结,这样才是真正的高效学习。

这篇关于重构之路 柳暗花明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001998

相关文章

Mybatis Plus快速重构真批量sql入库操作

Mybatis快速重构真批量sql入库操作 基本思路 重构mybatis默认方法saveBatch和saveOrUpdateBatch的实现 基本步骤 真批量保存实现类InsertBatchMethod真批量更新实现类MysqlInsertOrUpdateBath注册InsertBatchMethod和MysqlInsertOrUpdateBath到EasySqlInjector注册Eas

[机缘参悟-222] - 系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进(软件系统、思维方式、亲密关系、企业系统、商业价值链、中国社会、全球)

目录 前言:系统的重构源于被动的痛苦、源于主动的精进、源于进化与演进 一、软件系统的重构 1、重构的定义与目的 2、重构的时机与方法 3、重构的注意事项 4、重构的案例分析 二、大脑思维的重构 1、大脑思维重构的定义 2、大脑思维重构的方法 3、大脑思维重构的挑战与前景 三、认知的重构 1、定义 2、目的 3、方法 四、实例 五、总结 四、婚姻家庭的重构 1、婚

总结如何成为“好”代码——读《重构:改善既有代码的设计》有感

读后感 说是“读后感”,其实并不是看得很仔细,尤其是各种代码例子,我基本上是跳过的。个人觉得,重构这件事上,关键是要能嗅出坏代码,知道什么是好代码,这样目标明确后,重构的手段其实是水到渠成的,唯一要注意的就是书中强调的:要以小步为单位稳打稳扎进行。 我所理解的“好”代码 核心目标 那么如何才是“好”代码?书中的答案是:“人们是否能轻而易举地修改”,而我觉得抽象层级更高的描述是:易于未来的工

数据结构 - 二叉树(重构 + 遍历)

写在前面 昨天有同学问到我一题关于重构二叉树的问题(link),做了一下,也做个记录吧! 所谓二叉树的重构,就是给你前序和中序,或者中序和后序,让你还原这棵二叉树. 注意:给出前序和后序是不能唯一确定一棵二叉树的,证明请看这儿.   一.给出前序和中序,重构二叉树 一个递归的过程: 当前结点的value:每一轮根据前序的第一个元素确定当前结点值. 左子树的中序遍历

来自Uber的12条架构重构经验

来自Uber的12条架构重构经验 2016-02-04  来源:聊聊架构 分类:架构  阅读(56) 评论(0)  对于开发者来说,架构设计是软件研发过程中最重要的一环,所谓没有图纸,就建不了房子。在遍地App的互联网时代,架构设计有了一些比较成熟的模式,开发者和架构师也可以经常借鉴。 但是,随着应用的不断发展,最初的架构往往面临着各种问题,比如无法满足客户的需求、无法实现应用的扩

重构手法之重新组织函数

重构手法之重新组织函数 在重构的手法中,很大的一部分是对函数进行整理,使函数能够恰当地包装代码(让代码自己说话而不是写更多的注释)。重新组织函数的驱动力,往往都是由于函数过长。因为函数过长就以为着包含了更多属性和逻辑,这样复杂的逻辑和诸多属性(如函数内部的局部变量或者静态变量等)会让代码变得难以维护,需要对其进行重新组织。 提炼函数 在冗长的函数中提炼出精小的函数,让每个短小函数负责的

LeetCode 重构二叉搜索数,即找出两个被交换的节点

原题:Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its structure. Note: A solution using O(n) space is pretty straight forward. Could you de

QNN:基于QNN+example重构之后的yolov8det部署

QNN是高通发布的神经网络推理引擎,是SNPE的升级版,其主要功能是: 完成从Pytorch/TensorFlow/Keras/Onnx等神经网络框架到高通计算平台的模型转换; 完成模型的低比特量化(int8),使其能够运行在高通神经网络芯片上; 提供测试工具(qnn-net-run),可以运行网络并保存输出; 提供测试工具(qnn-profile-viewer),可以进行FLOPS、参数量、每

使用Lambda表达式重构模板方法

1.模板方法 如果你需要采用某个算法的框架, 同时又希望有一定的灵活度, 能对它的某些部分进行改进,那么采用模板方法设计模式是比较通用的方案。好吧,这样讲听起来有些抽象。换句话说,模板方法模式在你“希望使用这个算法,但是需要对其中的某些行进行改进,才能达到希望的效果”时是非常有用的。  让我们从一个例子着手, 看看这个模式是如何工作的。 假设你需要编写一个简单的在线银行应用。 通常, 用户需要