编程中的逻辑代码扁平化

让逻辑扁平化来提高代码可维护性和可读性

各行各业都在谈扁平化,对其最简单的理解就是追求简洁轻快,编程也不例外

JavaScript编程中,代码可维护性和可读性是一项任重道远的工作,它的优点灵活性同时也决定了它的缺点随意性;市面上很多框架理念等都可以很好的帮助我们优化代码,但是不代表可以完成代码优化的全部工作,同时我们需要提高本身代码可维护性和可读性

多层逻辑嵌套优化

工作中经常碰见类似的逻辑需求:满足条件a如何,否则如何;此时又满足条件b如何,否则如何...;最后才是条件全部满足如何。代码如下所示

if (a)
{
	if (b)
	{
		if (c)
		{
			...
		}
		else
		{
			console.log(‘C is not satisfied‘);
		};
	}
	else
	{
		console.log(‘B is not satisfied‘);
	};
}
else
{
	console.log(‘A is not satisfied‘);
};

如果你经常碰见类似代码,会不会觉得这样的代码二次理解时会有点麻烦;尤其是这段代码超长,原本又不是你写的,再加上很多前后端工程师缩进问题上非常不讲究,坑坑洼洼的编码风格让你阅读维护时感受到了浓浓的恶意

现在我们做出这样的编码逻辑调整:在不满足各条件时层层中断,如return、throw;既把超长代码分段,同时也淡化了多层逻辑理解的难度。代码如下所示

if (!a)
{
	console.log(‘A is not satisfied‘);
	return false;
};

if (!b)
{
	console.log(‘B is not satisfied‘);
	return false;
};

if (!c)
{
	console.log(‘C is not satisfied‘);
	return false;
};

...

是不是感觉这样调整后,无论视觉上还是理解上都轻松了许多;符合我们互联网超长工作阶段化安排的思路

长逻辑判断优化

工作中时常碰见一段很长的逻辑,需判断很多条件同时满足时才执行代码。如下所示

if (((typeof a == ‘object‘ && (a.x > 0 || a.y > 0)) || (typeof b == ‘object‘ && (b.x + b.y) > a.x * 2)) && (typeof c == ‘string‘ && !c.length > 0))
{
	...
};

如此真的太长了,阅读起来非常困难,需要我们做出一些优化来减轻逻辑判断过长带来的麻烦

最简单的办法是提取变量,根据不同功能或意图来拆分这段长逻辑判断。如下所示

var isA = typeof a == ‘object‘ && (a.x > 0 || a.y > 0);
var isB = typeof b == ‘object‘ && (b.x + b.y) > a.x * 2;
var isC = typeof c == ‘string‘ && !c.length > 0;

if ((isA || isB) && isC)
{
	...
};
代码可维护性和可读性优化是一项长久工作,一点一滴的优化技巧积累起来,会让你的工作更轻松
时间: 2024-10-13 01:52:28

编程中的逻辑代码扁平化的相关文章

你知道如何将python中嵌套的列表扁平化吗?

楔子 将python中嵌套的列表扁平化,指的就是: lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]] # 类似于上面的列表,我们要得到下面的结果 [1, 3, 3, 5, 6, 8, "aaa", 250] 那么我们要如何做呢? yield和yield from 关于如何把一个嵌套的列表扁平化,我们需要使用yield和yield from.这两位老铁的底层实现原理我不想深究,

Java 编程中关于异常处理的 10 个最佳实践

异常处理是书写 强健 Java应用的一个重要部分.它是关乎每个应用的一个非功能性需求,是为了优雅的处理任何错误状况,比如资源不可访问,非法输入,空输入等等.Java提供了几个异常处理特性,以try,catch和finally 关键字的形式内建于语言自身之中.Java编程语言也允许你创建新的异常,并通过使用  throw 和 throws关键字抛出它们.事实上,异常处理不仅仅是知道语法.书写一个强健的代码更多的是一门艺术而不仅仅是一门科学,这里我们将讨论一些关于异常处理的Java最佳实践.这些 J

用扁平化的界面设计吸引用户

在传统的网页开发乃至现在针对移动设备所做的设计,复杂炫目的效果对产品而言未必是一个好的选择. 尤其在移动设备上,过于复杂的效果非但很少能为应用吸引用户,反而时常让用户在视觉上产生疲劳,对产品界面中最基本的功能产生认知上的障碍.因此我们在设计中就需要参考“扁平化”的美学.UI界面设计 什么是扁平化设计 在实际当中,“扁平化设计”一词所指的是抛弃那些已经流行多年的渐变.阴影.高光等拟真视觉效果,从而打造出一种看上去更“平”的界面.北京UI设计 Layervault的设计师Allen Grinshte

编程中关于异常处理的10个最佳实践

在实践中,异常处理不单单是知道语法这么简单.编写健壮的代码是更像是一门艺术,在本文中,将讨论java异常处理最佳实践.这些Java最佳实践遵循标准的JDK库,和几个处理错误和异常的开源代码.这还是一个提供java程序员编写健壮代码的便利手册. Java 编程中异常处理的最佳实践 这里是我通过在国内著名的IT培训平台扣丁学堂在线学习收集的10个java编程中进行异常处理的10最佳实践.在Java编程中对于检查异常有褒有贬,强制处理异常是一门语言的功能.在本文中,我们将尽量减少使用检查型异常,同时学

扁平化设计的优势

目前,在市场上的视觉设计中,扁平化的设计的占比在持续上升,这其中究竟藏着有什么样的秘密,今天就来一起探讨一下吧. 首先,研究一样东西,我觉得都要从它的历史开始,因为可以了解它,并且清楚知道它的变化在哪里. 一.扁平化的开始和发展 在很多国内的人的心里,对扁平化的认识估计就是从微软的WINDOWS 8 和 WINDOWS PHONE 等界面开始,而后苹果的产品中也开始使用这样扁平化的视觉设计,由于微软和苹果产品在市场上的占比比较高,因此也一定程度上推动了整个移动端扁平化的设计进程. 二.扁平化的定

关于扁平化视觉设计趋势的一些小分享

本文来自网易云社区 作者:刘戈 作为视觉设计师来说,能设计出一款赏心悦目.走在设计潮流前线而又有自己品牌设计基因的产品是每个人心目中的追求.如果提到当今移动产品UI设计风格趋势时,相信不少设计师心目中的答案是扁平化设计.无可否认,在2013年扁平化设计风格全面普及以来至今,扁平化依旧是移动产品设计的主流方向,但众多产品使用扁平化设计的同时会使得产品之间的视觉差异越来越小,设计师如何把自己的产品设计做得与众不同,让自己产品于同类竞品中脱颖而出就变得尤为关键,这要求设计师时刻要保持设计上的创新,而创

android扁平化界面设计—在android中使用Font-Awesome

Font-Awesome 是为Bootstrap设计的一个图标集合字体,里面包含了300多个常用图标.使用Font-Awesome还具有如下优点: 1.减少了图标的绘制工作 2.适合扁平化界面设计 3.图标的大小和颜射可以在代码中自己设置,颜射不固定,可变性大 4.减小了APK的大小 Font-Awesome的使用方式: 到http://fortawesome.github.io/Font-Awesome/下载Font-Awesome字体,目前最新版本是4.3.0然后解压压缩包,将Fonts文件

iOS中字体样式的设置、颜色、空心、删除线、阴影、斜体、扁平化

不多说直接上代码! 这些知识基本的文字设置,实际上iOS中文字的设置有很多,比如说颜色.空心.删除线.阴影.斜体.扁平化等, NSStrokeWidthAttributeName这个属性所对应的值是一个 NSNumber 对象(小数).该值改变描边宽度(相对于字体size 的百分比).默认为 0,即不改变.正数只改变描边宽度.负数同时改变文字的描边和填充宽度.例如,对于常见的空心字,这个值通常为3.0. 同时设置了空心的两个属性,并且NSStrokeWidthAttributeName属性设置为

高效 告别996,开启java高效编程之门 3-7实战:常用中间操作演示之:过滤/映射/扁平化 filter/map/flagMap

1 重点 filter方法的使用 map方法的使用 flatMap方法的使用 forEach方法的使用 2 map和flatMap的区别: map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd. flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd.通常用来切分单词,可用来单词计数 3 实战演示之过滤(filter): package com.imooc.zhangxiaoxi.stream; import com.al