- 主题:重构了屎山代码
这种看起来很爽的 Java 代码其实是低质 C++代码
【 在 iwantfly 的大作中提到: 】
:
: 这是重构后的代码
: QDomElement node = doc.documentElement()
: .firstChildElement("SynchStatus")
: .firstChildElement("Job")
#发自zSMTH-v-@钛星
--
FROM 223.104.41.*
没觉得有啥好的
这么写,省了各种异常处理,就图个好看而已
万一中间某函数返回个null,直接嗝屁
处理返回值很烦很冗长,但却是必须的
【 在 iwantfly 的大作中提到: 】
:
: 这是重构后的代码
: QDomElement node = doc.documentElement()
: .firstChildElement("SynchStatus")
: .firstChildElement("Job")
--
FROM 123.114.94.*
不会嗝屁,这些类的成员函数返回的不是空指针而是空对象,可链式引用
不光好看,还可以省些脑子,节约点发量
【 在 Zinux 的大作中提到: 】
: 没觉得有啥好的
: 这么写,省了各种异常处理,就图个好看而已
: 万一中间某函数返回个null,直接嗝屁
: ...................
--
FROM 111.199.187.*
挺好的。
【 在 iwantfly 的大作中提到: 】
: 这是重构后的代码
: QDomElement node = doc.documentElement()
: .firstChildElement("SynchStatus")
: ...................
--
FROM 115.193.140.*
看代码中规中矩,一个普通开发人员的水平。
从软件设计的角度当然改善的地方很多。首先代码不能明显看到他的意图,可读性上打了大的折扣。
感觉xml处理那部分用xpath可能会简化很多
--
FROM 183.179.126.*
试了下ChatGPT。这是他给的分析和建议
该函数的作用是接收一个USBL数据包并解析其中的信息,然后根据具体的状态更新特定的传感器的状态。代码的执行过程如下:
调用UnpacketData()函数对收到的USBL数据包进行解包,将解包后的数据存储在strUnpacketData字符串变量中。
使用QDomDocument类对strUnpacketData进行解析,将解析后的XML文档存储在doc变量中。
检查doc是否为空,如果为空,则解析出现问题,返回false。
检查XML文档是否符合特定的格式,如果不符合,则返回false。
从XML文档中提取SynchStatus节点,并根据需要进一步提取Job节点。
从Job节点中提取RemoteControlEnabled属性,并根据需要进一步提取Objects节点。
从Objects节点中提取Object节点,并根据需要进一步提取Type和UID属性,以及State属性。
检查State属性是否为Tracked,如果是,则更新相应的传感器状态,并返回true,表示解析成功。
将更新后的XML文档传递给SendUSBLDataToDisplay()函数进行处理。
代码值得改善的地方包括:
命名不够清晰和语义化。变量名和函数名应该能够表达其所表示的含义,增加代码的可读性和可维护性。
缺少注释说明。对于一些复杂的操作和逻辑,应该在代码中添加注释,以方便后续对代码的理解和修改。
过于复杂的条件判断语句。代码中存在多重嵌套的if语句,使得代码的可读性变差。可以考虑通过提取子函数或使用switch语句等方式来简化代码结构。
过度使用指针和引用。虽然使用指针和引用可以提高代码的执行效率,但也会增加代码的复杂度和维护难度。在不必要的情况下,应该尽量避免使用指针和引用。
对于一些关键的操作和数据结构,没有进行足够的错误处理和异常处理。在实际应用中,很可能会出现意外情况,需要对这些情况进行处理,以保证程序的健壮性和可靠性。
--
FROM 183.179.126.*
当时的人大概一年只需要写2万行代码
【 在 liangyue (高级动物) 的大作中提到: 】
: 看过一个20000行的c函数。
: 关键是 那是80年代的代码,
: 我不知道当时的人是怎么做到十几层的括号对齐的
:
--
FROM 183.179.53.*
这是写c习惯了
【 在 z16166 的大作中提到: 】
: 说不定每个人看别人的代码都是有点shi的
: 我觉得有点shi的,现在能忍就忍,没工夫去理
: 之前是发现有个类,被搞成单例,但是每个成员都是static,没忍住,把static全都去掉了。这纯粹是c++还没入门的写的,但是没人干活,还得顶上
--
FROM 111.197.85.*
能写成这样不出错,水平还是可以的。
【 在 iwantfly 的大作中提到: 】
: 最近完成了重构某位二十年工作经验人员写的代码
: 其特点是特别善于使用stl,善于使用各种先进特性
: 主要优点有:
: (1)善于使用pair, tuple,各种tuple满天飞
: 最长定义了一个6个字段的tuple, 各种 std::get满天飞
: (2)努力认真严谨,每
: ..................
--
FROM 107.3.131.*
tuple会不会降低可读性?
【 在 iwantfly 的大作中提到: 】
: 最近完成了重构某位二十年工作经验人员写的代码
: 其特点是特别善于使用stl,善于使用各种先进特性
: 主要优点有:
: ...................
--
FROM 180.109.47.*