zoukankan      html  css  js  c++  java
  • 编程中的逻辑代码扁平化

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

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

    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)
    {
    	...
    };
    
    代码可维护性和可读性优化是一项长久工作,一点一滴的优化技巧积累起来,会让你的工作更轻松
  • 相关阅读:
    微服务常见安全认证方案Session token cookie跨域
    谈谈基于OAuth 2.0的第三方认证 [上篇]
    Kerberos安全体系详解---Kerberos的简单实现
    kerberos认证原理---讲的非常细致,易懂
    重放攻击(Replay Attacks)
    HTTP
    Cookie/Session机制详解
    cookie和session的区别与联系
    基于Token的WEB后台认证机制
    如何用phpmyadmin导入大容量.sql文件,直接使用cmd命令进行导入
  • 原文地址:https://www.cnblogs.com/johnl/p/4842351.html
Copyright © 2011-2022 走看看