精简代码之帮if-else瘦身

本文介绍四种减少if-else分支结构的编程技巧,包括使用卫语句、map映射、三元运算符及面向对象的继承和多态。这些技巧有助于提升代码的可读性和维护性。

相信大家在平时的开发过程中一定没法避免if-else分支结构的使用,有些时候确实无法避免,但有一些特定的场合我们可以合理的运用一些技巧来对给代买瘦身,本文列举了四种可行的方式,当然还有很多其他的场合或者方式,欢迎大家在评论区补充:
在这里插入图片描述

1- 卫语句(提前return)

卫语句(Guard clause)指的是在遇到异常情况时,提前进行抛出,这在一定程度上可以减少if-else分支结构的使用,可以在逻辑性和代码简洁性上得到提高

在阿里巴巴与Java社区开发者制定的《Java开发手册(华山版)》中有对控制语句的编程规约有如下的建议:

表达异常的分支时,少用if-else方式,这种方式可以改写成:

if (condition) {
...
return obj;
}
// 接着写else的业务逻辑代码;

说明:如果非使用if()…else if()…else…方式表达逻辑,避免后续代码维护困难,【强制】请勿超过3层。
正例:超过3层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现,其中卫语句即代码逻辑先考虑失败、异常、中断、退出等直接返回的情况,以方法多个出口的方式,解决代码中判断分支嵌套的问题,这是逆向思维的体现。
示例如下:

public void findBoyfriend(Man man) {
    if (man.isUgly()) {
    System.out.println("本姑娘是外貌协会的资深会员");
    return;
}
if (man.isPoor()) {
    System.out.println("贫贱夫妻百事哀");
    return;
}
if (man.isBadTemper()) {
    System.out.println("银河有多远,你就给我滚多远");
    return;
}
	System.out.println("可以先交往一段时间看看");
}

再来看下面这段代码,在条件为真的情况下我们执行相关的业务代码,否则抛出异常

void Demo(...)
{
    if (true_to_continue){
        ... //业务代码
    }
    else{
        throw new SomeException();
    }
}

如果,我们将if内的条件进行反转之后,同样的功能,但是我们减少了else的使用

void Demo(...)
{
    if (!true_to_continue){
        throw new SomeException();
    }
     ... //业务代码
}

2- map映射

比如我们将英文单词转为化为对应的数字,如果用if-else分支结构可能会写成下面的代码:

int ConvertStr2Num(string strin){
    if(strin == "one") return 1;
    else if(strin == "two") return 2;
    else if(strin == "three") return 3;
    //其余的情况...
    return 0;
}

这样看起来我们的代码会显得很冗长,在C++里面我们可以借助map来实现,即我们预先将逻辑分支的信息存储到map中,之后通过对键值的读取来获得相应的输出

int ConvertStr2Num(string strin) {
    static const map<string, int> wordmap = {
        {"one", 1},
        {"two", 2},
        {"three",3}
        // 其余的情况...
    };
    const auto result = wordmap.find(strin);
    if (result == wordmap.end())   return 0;
    return result->second;
}

当然对于map这样键值对应的特性,我们也可以使用数组或者结构体等来实现相同的功能

3- 三元运算符

三元运算符使用的基本结构如下

[条件语句] ? [表达式1] : [表达式2]

这个大家可能都比较熟悉了,比如比较两个数的大小的时候可以为了简化if-else分支结构采用三元运算符进行替换,这里还值得注意的是,如果结合宏函数使用效果可能更好

#define MAX(a,b) (((a)>(b))?(a):(b))

4-利用继承和多态

对于减少if-else分支结构的使用的方法不得不提的就是面向对象的编程

关于小猫小狗的一段程序如下

if (animal.IsDog){//狗
    animal.EatCookie();
    animal.Bark();
}
else {//猫
    animal.EatFishs();
    animal.Meow();
}

在面向对象的编程过程中,我们只关心接口是什么,具体的实现我们并不关心,所以我们可以创建两个子类分别表示Cat和Dog,具体的实现方法放在子类中完成

class Animal {
public:
    virtual void makeSound();
    virtual void Eat();
};

class Cat: public Animal {
public:
    void makeSound() {
        cout<<"meow"<<endl;
    }
};

class Dog : public Animal {
public:
      void makeSound() {
        cout<<"bark"<<endl;
      }
};

最后,愿你我都可以写出优雅的代码!

Microsoft Office 精简版的下载和安装方法主要围绕着减少安装包体积和优化系统资源占用,同时保留用户最常用的功能组件。以下是一些常见的精简版下载方式和安装方法: ### Microsoft Office 精简版下载 1. **Office 2024 精简版** Microsoft Office 2024 精简版是官方发布的一个轻量化版本,仅保留了 Word、Excel 和 PowerPoint 三大核心组件,安装包大小仅为 300MB,相比完整版大大减少了下载和安装时间。该版本适合对办公软件需求较为基础的用户[^1]。 2. **Office 2016 三合一精简版** Office 2016 的三合一精简版集成了 Word、Excel 和 PowerPoint 三大组件,通过移除不必要的功能模块,显著减少了占用空间并提升了运行速度。此版本适合日常办公需求,且经过优化后安装简便、使用流畅[^3]。 3. **WPS Office 2019 个人版** WPS Office 2019 个人版是由金山软件开发的精简办公套件,专注于核心办公需求,去除了冗余功能,界面更加简洁直观。该版本完全免费,适合个人用户使用,同时支持标签管理和个性化主题设置[^4]。 ### 精简 Office 安装方法 1. **自定义安装选项** 在安装 Microsoft Office 时,可以选择自定义安装路径和功能模块。例如,在安装过程中仅选择 Word、Excel 和 PowerPoint 三个组件,避免安装不必要的附加软件(如 OneNote、Outlook 等)。这种方式可以有效减少安装体积并提升运行效率[^2]。 2. **使用精简工具** 对于已经下载的完整版 Office 安装包,可以通过第三方工具进行精简处理。例如,使用 Office_Setup.exe 工具可以在安装前选择所需功能模块,从而实现对安装包的瘦身。 3. **手动删除冗余组件** 安装完成后,用户可以通过控制面板中的“程序和功能”选项,手动卸载不需要的 Office 组件,如 Outlook、Access 等。这种方式适用于已经安装完整版 Office 的用户,希望减少系统资源占用的情况。 4. **注意运行库依赖** 在使用精简版 Office 时,由于部分运行库文件可能被移除,安装后可能会遇到缺失某些 DLL 文件的报错提示。此时,建议安装微软常用运行库(如 Visual C++ Redistributable)以确保软件正常运行[^1]。 ### 示例代码:自定义安装脚本(批处理) 以下是一个简单的批处理脚本示例,用于自动化安装 Office 并选择特定组件: ```batch @echo off setlocal :: 设置 Office 安装路径 set INSTALL_DIR=C:\Software\Office2024 :: 创建安装目录 if not exist "%INSTALL_DIR%" mkdir "%INSTALL_DIR%" :: 开始安装 Office 并选择组件 start /wait msiexec /i "Office2024Setup.msi" /quiet /norestart ADDLOCAL=Word,Excel,PowerPoint TARGETDIR="%INSTALL_DIR%" :: 检查安装是否成功 if %ERRORLEVEL% == 0 ( echo Office 安装成功! ) else ( echo Office 安装失败,请检查日志文件。 ) endlocal ``` 该脚本假设你已经下载了 Office 的 MSI 安装包,并通过 `ADDLOCAL` 参数指定需要安装的组件(如 Word、Excel 和 PowerPoint)。你可以根据实际需求调整脚本内容。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值