`
vishare
  • 浏览: 8896 次
  • 性别: Icon_minigender_2
  • 来自: 南宁
最近访客 更多访客>>
社区版块
存档分类
最新评论

代码结构及逻辑的一些思考

    博客分类:
  • js
 
阅读更多
问题:

a函数是根据传入参数的不同类型,选择不同的函数去执行操作.但是在执行不同的函数之前,需要做一些数据上的处理,那么这部分处理是放在各个被调用的函数中还是放在a函数中统一处理好呢?
function a (args){
   var abc 
   if (args =='1' || args =='2' || args =='5') {
        var abc = args+"123";
   }
   if (args =='3' || args =='4') {
         var abc = args+"456";
   }
   if (args =='1') doB(abc);
   if (args =='2') doC(abc);
   if (args =='3') doD(abc);
   if (args =='4') doE(abc);
   if (args =='5') doF(abc);
}
function doB(abc){
    ...
}
function doC(abc){
    ...
}
function doD(abc){
    ...
}
function doE(abc){
    ...
}
function doF(abc){
    ...
}


这种写法,看起来是把args统一处理了,但是在各个分处理的函数(如doB,doC等)中,还会有对于传入参数的处理,似乎就会存在逻辑混乱的问题,当做代码修改和维护的时候,如果是对于doB这个函数的处理,就必须得看两个部分的代码.先要从a开始跟踪,然后再是doB部分的代码处理.

还是写成
function a (args){   
   if (args =='1' || args =='2' || args =='5') {       
	doB(abc,args);
   }
   if (args =='3' || args =='4') {
         doC(abc,args);
   }
   if (args =='1') doB(abc);
   if (args =='2') doC(abc);
   if (args =='3') doD(abc);
   if (args =='4') doE(abc);
   if (args =='5') doF(abc);

}
function doB(abc){
    var abc = args+"123";

    ...
}
function doC(abc){
   var abc = args+"123";
    ...
}
function doD(abc){
   var abc = args+"456";

    ...
}
function doE(abc){
   var abc = args+"456";

    ...
}
function doF(abc){
   var abc = args+"123";
    ...
}

这种写法逻辑不混乱了,但是,部分代码里有重复的部分存在.如果对于同一个类型的args做相同的修改,那么每次修改都要到各个相应的函数中去修改,如果忘修改一处,就会留下一个隐患.
但是,如果需要做的修改是,当args=='1',取的args值变为var abc = args+"789";
那么在做代码跟踪及修改的时候,就只需要关注doB就可以了,不需要再看a函数的处理.在这一点上,这种方式又是比较好的.

怎么做,才能保证代码的逻辑清楚,又能保证代码的修改时尽量少的更改代码?在两者存在矛盾的时候,取优先考虑哪一种呢?

个人倾向于第二种方式,但是还没有找到相应的理论依据,所以先在此记录下来,如有高手路过,也希望能有所指点
分享到:
评论

相关推荐

    mbot机器人巡线程序-mBot机器人编程——用机器人的逻辑思考问题.pdf

    mbot机器⼈巡线程序_mBot机器⼈编程——⽤机器⼈的逻辑思 考问题 mBot机器⼈编程 ——⽤机器⼈的逻辑思考问题 ⽂/陈林 提到机器⼈,想必⼤家都不会陌⽣。但如果问到什么是机器⼈时,似乎⼼中的答案并不是那么的确切...

    软件开发培训之如何编写优雅的代码

    一份代码即使严格遵守了代码规范,但思考不全面,逻辑不严谨,到处都是各种漏洞和bug,也不能称之为优雅。 □ 平均来说,一次编写的代码会被阅读十次,所以尽力保持代码优雅是有意义的。当养成习惯之后,你会发现...

    java 编程入门思考

    1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 ...

    通用的C++数据结构代码实现,使用模板.rar

    一、什么是模板 模板是C++中自动生成代码的技术,例如我们在C++若想实现一...由于以上原因C++之父在C++中实现了模板技术,既能支持多种类也能兼顾严格的类型检查,能让程序员编程专注思考业务逻辑而不用关心数据类型。

    超市销售管理系统设计报告.docx

    第一阶段:开发前的设置和思考 题目要求: 需求分析 概念结构设计 逻辑结构设计 实体(红色表示主键) 联系(红色表示主键) 数据库逻辑结构设计 登录用户 商品表 供货商 订货单表 订货明细 入库单 库存商品 销售...

    代码生成器Mgicode生成器JAVA代码生成器

    代码结构组织的方面(如采用三层) 与设计及设计文档的关系 与开发模型(如瀑布)的关系 与需求及需求变更的关系 与测试部署之间的关系 除了这些特殊关系,代码中还有实体之间的关系,业务关系等。 我们可以...

    结构化和面向对象编程方法

    结构化编程强调程序的结构和逻辑,并避免使用goto等跳转语句。 而面向对象编程则是一种基于对象概念的编程范式。在面向对象编程中,所有的数据和功能都被组织成对象,并通过对象之间的交互来完成程序的功能。面向...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    C#数据结构

    逻辑结构(Logic Structure),数据的逻辑结构是从具体问题抽象出来的数学模型, 是为了讨论问题的方便,与数据在计算机中的具体存储没有关系。然而,我们讨 论数据结构的目的是为了在计算机中实现对它的操作,因此还...

    数字电路加减法器

    1. 实验目的: (1) 学习二进制加/减法器运算器的原理和设计方法 ...(3) 撰写实验报告:含程序源代码、激励代码及其仿真波形、综合得到的电路图、实验结果分析以及对本实验的”思考与探索”部分所作的思考与探索.

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    python爬虫大总结,代码完整

    这里我们主要介绍的 一种简便的,实用的,逻辑清晰,代码量少的 import requests #请求网页 from bs4 import BeautifulSoup #分析html的结构 我们主要利用到2个库:requests,bs4 库的用法,读者请自行百度, ...

    Java毕业设计-基于springboot开发的论坛系统设计与实现-毕业论文(附毕设源代码).rar

    代码结构清晰,注释详尽,方便读者理解和学习。同时,该项目具有良好的可扩展性和可定制性,读者可以根据自己的需求进行二次开发,实现更多的功能。 总的来说,本资源是一份极具价值的毕业设计资料,既适合学生作为...

    Java毕业设计-基于springboot开发的相亲网站-毕业论文(附毕设源代码).rar

    在代码实现上,本项目遵循了MVC的设计模式,将业务逻辑、数据访问和界面展示进行了清晰的分离,使得代码结构清晰、易于维护。同时,项目还采用了Spring Security进行安全控制,确保了用户数据的安全性。 毕业论文...

    一个微型嵌入式RTOS,参考李述铜《从0到1自己动手写嵌入式操作系统》

    第二周 核心数据结构及任务调度管理 C3.01 临界区保护。采用关闭中断的方式保护任务与任务之间、任务与中断之间的共享资源 C3.02 调度锁保护。设置一个任务调度锁计数器变量schedLockCount,若其值大于0,则任务...

    微窗 CMS(微信公众号和支付宝管理平台系统) v3.0.2016.05.27.rar

    微窗 CMS是一款免费开源的微信公众号和支付宝服务窗管理平台系统,目标是让你能够更快速的开发微信及服务窗功能应用,它提供了日常任务中所需的大量类库, 以及简单的接口和逻辑结构。通过减少代码量,微窗Vwins 让...

    Verilog HDL程序设计与实践--云创工作室编著

     第9章 高级逻辑设计思想与代码风格  第10章 可综合状态机开发实例  第11章 常用逻辑的Verilog HDL实现  第12章 Xilinx硬核模块的调用  第13章 串口接口的Verilog HDL设计  参考文献

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    2.4.4逻辑运算 2.4.5运算符的优先级 2.5小结 第3章程序设计基础:流程控制和数组 3.1判断结构 3.1.1为什么需要判断结构 3.1.2if结构 3.1.3switch结构 3.2认识循环结构 3.2.1为什么需要循环结构 3.2.2while...

    Java毕业设计-基于springboot开发的Java免税商品优选购物商城设计与实现代码-毕业论文(附毕设源代码).rar

    该毕业设计项目不仅展示了学生在Java Web开发方面的技能,还体现了他们对商城业务逻辑的深入理解和创新思考。通过该项目,学生可以锻炼自己的实践能力、解决问题的能力以及团队协作能力,为未来的职业发展打下坚实的...

    算法导论 原书第3版 中文完整版 高清扫描 第1 2部分

    说明和解释力求浅显易懂 不失深度和数学严谨性 《算法导论 原书第3版 》选材经典 内容丰富 结构合理 逻辑清晰 对本科生的数据结构课程和研究生的算法课程都是非常实用的教材 在IT专业人员的职业生涯中 本书也是一本...

Global site tag (gtag.js) - Google Analytics