问题:
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机器⼈编程——⽤机器⼈的逻辑思 考问题 mBot机器⼈编程 ——⽤机器⼈的逻辑思考问题 ⽂/陈林 提到机器⼈,想必⼤家都不会陌⽣。但如果问到什么是机器⼈时,似乎⼼中的答案并不是那么的确切...
一份代码即使严格遵守了代码规范,但思考不全面,逻辑不严谨,到处都是各种漏洞和bug,也不能称之为优雅。 □ 平均来说,一次编写的代码会被阅读十次,所以尽力保持代码优雅是有意义的。当养成习惯之后,你会发现...
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++中自动生成代码的技术,例如我们在C++若想实现一...由于以上原因C++之父在C++中实现了模板技术,既能支持多种类也能兼顾严格的类型检查,能让程序员编程专注思考业务逻辑而不用关心数据类型。
第一阶段:开发前的设置和思考 题目要求: 需求分析 概念结构设计 逻辑结构设计 实体(红色表示主键) 联系(红色表示主键) 数据库逻辑结构设计 登录用户 商品表 供货商 订货单表 订货明细 入库单 库存商品 销售...
代码结构组织的方面(如采用三层) 与设计及设计文档的关系 与开发模型(如瀑布)的关系 与需求及需求变更的关系 与测试部署之间的关系 除了这些特殊关系,代码中还有实体之间的关系,业务关系等。 我们可以...
结构化编程强调程序的结构和逻辑,并避免使用goto等跳转语句。 而面向对象编程则是一种基于对象概念的编程范式。在面向对象编程中,所有的数据和功能都被组织成对象,并通过对象之间的交互来完成程序的功能。面向...
主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...
逻辑结构(Logic Structure),数据的逻辑结构是从具体问题抽象出来的数学模型, 是为了讨论问题的方便,与数据在计算机中的具体存储没有关系。然而,我们讨 论数据结构的目的是为了在计算机中实现对它的操作,因此还...
1. 实验目的: (1) 学习二进制加/减法器运算器的原理和设计方法 ...(3) 撰写实验报告:含程序源代码、激励代码及其仿真波形、综合得到的电路图、实验结果分析以及对本实验的”思考与探索”部分所作的思考与探索.
主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...
这里我们主要介绍的 一种简便的,实用的,逻辑清晰,代码量少的 import requests #请求网页 from bs4 import BeautifulSoup #分析html的结构 我们主要利用到2个库:requests,bs4 库的用法,读者请自行百度, ...
代码结构清晰,注释详尽,方便读者理解和学习。同时,该项目具有良好的可扩展性和可定制性,读者可以根据自己的需求进行二次开发,实现更多的功能。 总的来说,本资源是一份极具价值的毕业设计资料,既适合学生作为...
在代码实现上,本项目遵循了MVC的设计模式,将业务逻辑、数据访问和界面展示进行了清晰的分离,使得代码结构清晰、易于维护。同时,项目还采用了Spring Security进行安全控制,确保了用户数据的安全性。 毕业论文...
第二周 核心数据结构及任务调度管理 C3.01 临界区保护。采用关闭中断的方式保护任务与任务之间、任务与中断之间的共享资源 C3.02 调度锁保护。设置一个任务调度锁计数器变量schedLockCount,若其值大于0,则任务...
微窗 CMS是一款免费开源的微信公众号和支付宝服务窗管理平台系统,目标是让你能够更快速的开发微信及服务窗功能应用,它提供了日常任务中所需的大量类库, 以及简单的接口和逻辑结构。通过减少代码量,微窗Vwins 让...
第9章 高级逻辑设计思想与代码风格 第10章 可综合状态机开发实例 第11章 常用逻辑的Verilog HDL实现 第12章 Xilinx硬核模块的调用 第13章 串口接口的Verilog HDL设计 参考文献
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 Web开发方面的技能,还体现了他们对商城业务逻辑的深入理解和创新思考。通过该项目,学生可以锻炼自己的实践能力、解决问题的能力以及团队协作能力,为未来的职业发展打下坚实的...
说明和解释力求浅显易懂 不失深度和数学严谨性 《算法导论 原书第3版 》选材经典 内容丰富 结构合理 逻辑清晰 对本科生的数据结构课程和研究生的算法课程都是非常实用的教材 在IT专业人员的职业生涯中 本书也是一本...