逻辑正确的重要性

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 源自近一个月的项目,在程序逻辑方面犯了错误,原地打转拖延了进度,也由此深刻认识到逻辑对于程序的重要性。

源自近一个月的项目,在程序逻辑方面犯了错误,原地打转拖延了进度,也由此深刻认识到逻辑对于程序的重要性。


      一、项目进度


    (1)前期:搭建环境(自己的环境&竞争对手的环境),验证对手的环境能够跑正确,我们的环境下会出bug。


    (2)中期:分析出我们的环境为什么会有bug?分析角度:抓包、前台日志、后台日志跟踪。基本确定程序出bug的大致范围。


    (3)后期:从日志跟踪搜索代码,确定出错代码的位置。思考为什么为会出错,是逻辑错误?还是语法错误?还是…….完成代码修改并Fixed bug。


      二、卡壳点


   (1)中期进入后期的时候,想着要不要先熟悉下模块的框架?但我尝试了从模块自身、模块与模块之间交互的角度考虑大框架是怎么样的?但何尝容易,近8年的模块,原始&修补何其多,且前期的文档不规范,多是从需求、功能实现的角度介绍的,很难去衔接和获取想要的东西。加上源代码作者也已不在,摸索难免会花去很多时间。


   (2)后期的时候,能确定了代码的大致位置,但是不知道如何修改代码?主要是程序逻辑不清晰。不知道异常后如何处理?


     三、反思


   (1)前期拿到任务后,因为意识到搭建复杂耗时长,就想着赶紧去布置环境。这个和自己环境不熟悉有关。


   (2)中期分析的时候,犯了个很大的错误:对于核心模块的日志没有开启,而是自己跟读代码猜测可能的出错位置。短期内不可能搞定代码逻辑以及项目任务紧急的矛盾越发突出。当代码很复杂且非自己熟悉的模块时,漫无目的的猜测会花费很长的时间。最好的方法就是:打开日志,从日志真正跟随代码的逻辑。


   (3)后期的时候,此时bug位置基本锁定大致位置,此时应该尽量缩小代码范围,Fixed掉bug。


     核心点梳理如下:

image.png

引用肯定可以实现,但我们只提供了C的接口,C语言不支持引用,所以,只能通过地址传递实现。犯了个错误就是:地址传递赋值的时候应该是*ptrans_out = *pval_in, 而不是ptrans_out= pval_in。值赋值,而非地址,确保地址不变。


      四、总结


      前、中、后三个阶段,都不应该忘记最终要达成的目标是什么?要达成这个目标自己该如何做,自己能够表述清楚,必要时可以自己画图梳理下逻辑思路,这样才不会跑偏。


      逻辑对于程序开发的重要性,远远不止我写的这点东西。理清程序逻辑,纵然程序可能有很多坑,纵然会花一定时间,但理顺后后面的路会相对好走。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
软件复用问题之如果无法进行定量分析,评估系统的复用性要如何解决
软件复用问题之如果无法进行定量分析,评估系统的复用性要如何解决
|
5月前
|
架构师 持续交付 微服务
探索软件架构设计的深层逻辑
【6月更文挑战第5天】在数字化浪潮中,软件架构设计如同搭建一座虚拟的巴别塔,它不仅需要承载技术的重量,还要预见未来的需求。本文将通过我的个人经验,探讨如何在变化莫测的技术海洋中,寻找到稳固的架构基石,以及如何让这座塔楼灵活地适应不断变化的环境。
47 1
|
6月前
|
搜索推荐 测试技术
性能场景之业务模型中二八原则的误区
【2月更文挑战第18天】性能场景之业务模型中二八原则的误区
166 6
性能场景之业务模型中二八原则的误区
|
6月前
逻辑模型—第一性原理
逻辑模型—第一性原理
|
设计模式 测试技术 程序员
代码的简单设计五原则
代码的简单设计五原则
33087 1
|
安全
【软件系统分析与设计】需求分析的任务、目标及方法
【软件系统分析与设计】需求分析的任务、目标及方法
975 0
【软件系统分析与设计】需求分析的任务、目标及方法
|
安全
从想法到设计的过程
在接下来的几节里,我会向你展示游戏制作的整个流程,从开始的一个粗略的想法,到游戏设计,再到最终的游戏制作。
144 0
从想法到设计的过程
|
容器
框架设计思维符合语义即可使用,而不用关心底层的实现
框架设计思维符合语义即可使用,而不用关心底层的实现
227 0
框架设计思维符合语义即可使用,而不用关心底层的实现
|
自然语言处理 算法 JavaScript
重构的秘诀:消除重复,清晰意图
  11年前有幸阅读了《重构——改善既有代码的设计》第一版,当时是一口气读完的,书中的内容直接惊艳到我了。   今年读了该书的第二版,再次震撼到我了,并且这次的示例代码用的JavaScript,让我更有亲切感。   全书共有12章,前面5章是在讲解重构的原则、测试、代码的坏味道等内容,后面7章是各种经验和实践,全书的精髓所在。
逻辑难题-问路
逻辑 难题 问路
284 0