[Clean Code] Chapter 8: 第三方API的使用!

Chapter 8:Boundaries

很多时候我们会使用 第三方包 API 其他部分开发的API 或者 开源软件。
我们应当cleanly 的使用这些外部代码


1-使用第三方代码

代码的提供者需要考虑通用性,但是代码的使用者,则会根据自己的需求希望special的功能。

创建一个关于传感器的map, 则

// 代码1
Map sensors = new HashMap();
...
// 取出 not clean
Sensor s = (Sensor)sensors.get(sensorId );

or
// Map<Sensor> 依然是提供超出我们需求的东西
Map<Sensor> sensors = new HashMap<Sensor>();
...
Sensor s = sensors.get(sensorId );

一种解决办法,

// 代码2
public class Sensors {
    private Map sensors = new HashMap();

    public Sensor getById(String id) {
        return (Sensor) sensors.get(id);
    }
    //snip
}

但是并不是说每次使用map都要这样做,作者推荐不要直接在你的整个系统中直接传map,且避免传给公共API, 或者从API返回

在学习中测试你使用的API接口,确保你返回你要的结果


2-学习 log4j

一个简单的命令行日志,且将系统其余部分与 log4j 隔离开。

public class LogTest {
    private Logger logger;

    @Before
    public void initialize() {
        logger = Logger.getLogger("logger"); logger.removeAllAppenders(); Logger.getRootLogger().removeAllAppenders();
    }

    @Test
    public void basicLogger() {
        BasicConfigurator.configure();
        logger.info("basicLogger");
    }

    @Test
    public void addAppenderWithStream() {
        logger.addAppender(new ConsoleAppender(
            new PatternLayout("%p %t %m%n"), ConsoleAppender.SYSTEM_OUT));
        logger.info("addAppenderWithStream");
    }

    @Test
    public void addAppenderWithoutStream() {
        logger.addAppender(new ConsoleAppender(
            new PatternLayout("%p %t %m%n")));
        logger.info("addAppenderWithoutStream");
    }
}

3-使用还没有开发的代码

项目中,你的项目可以需要和其他的子系统相互配合,但是子系统还没开发完成(也许设计都没完成)。
定义你需要的子系统接口,保证代码clean, 然后预留对子系统API的适配器。

[A] <---> [B API](未开发)

可以分解为
[A] <---> [B]
           |
           +--- [Fake B]
           |
           +--- [B API Adapter] <-- 适配 --> [未来会开发的B API]

4-总结

在测试中学习第三方的接口,保证其输出的确实你想要的结果。
将系统的其余部分与这些Boundaries隔离开,使其中的依赖降到最低(譬如添加Adapter)。这样在以后第三方代码更新的时候,我们的工作量会降到最低。

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值