一般而言,自然界是以对称为美的。但是,在编程的世界里面,不对称的情况比比皆是,一样的美。
常见的api中有如下例子:
// String的方法。
public String substring(int beginIndex, int endIndex)
// List的方法。
List<E> subList(int fromIndex, int toIndex)
这里一直遵循着不对称的左闭右开原则。
这种原则有2个显著的优点。
1 计算该范围所包含的数量时,直接endIndex-beginIndex就好了。如果是左闭右闭区间的话,则需要形如endIndex-beginIndex+1的方式来计算。
2 左闭右开区间有良好的叠加性。举个例子,一个[0,100)的范围,自然等于[ 0,10), [10,20),…,[90,100)的叠加。
了解了这种不对称的优点,那么我们设计接口的时候,应该尽量遵循左闭右开原则。
/**
* 查找在一定时间范围内加入系统的用户。包含start时间点,不包含end时间点。
* */
public List<User> findUser(Date start, Date end)
再看一个例子:
public static final String FILE_SEPARATOR = File.separator;
private String baseDir;
public String getFileDir(String userId, String date) {
String relativePath = getDateDir(date) + getUserDir(userId);
return getBaseDir() + FILE_SEPARATOR + relativePath;
}
private String getUserDir(String userId) {
return FILE_SEPARATOR + userId + FILE_SEPARATOR;
}
private String getDateDir(String date) {
return date + FILE_SEPARATOR + date;
}
private String getBaseDir() {
return baseDir;
}
这段代码的功能是构建一个用户在特定日期的文件路径目录。该文件路径目录由三部分组成,baseDir是配置的根目录,日期目录是根据日期所得到的目录,用户目录是根据用户id得到的目录。
在写这段代码的过程中,很明显没有考虑separator和目录的关系,导致各个子目录风格不统一,每次使用类的方法时都要仔细的检查该目录是不是以separator结尾,以防出错。
很明显,使用不对称的原则可以很好的解决该问题,可以规定所有子目录都以separator开头,但是不以separator结尾。
重构后代码如下:
public static final String FILE_SEPARATOR = File.separator;
private String baseDir;
public String getFileDir(String userId, String date) {
return getBaseDir() + getDateDir(date) + getUserDir(userId);
}
private String getUserDir(String userId) {
return FILE_SEPARATOR + userId;
}
private String getDateDir(String date) {
return FILE_SEPARATOR + date + FILE_SEPARATOR + date;
}
private String getBaseDir() {
return baseDir;
}
当然,这里getFileDir没有了separator结尾,需要修改使用到该方法的地方。
做了该重构以后,所有子目录的格式变为统一的,方便记忆和使用,并且极大的简化了目录拼接问题,由于separator不对称的使用,现在目录的拼接只需要简单的使用子目录拼接即可,不用关心separator的问题了。
分享到:
相关推荐
如果双臂不对称,可能会导致数据采集的不均衡,进而影响重构图像的质量。因此,优化双臂对称性是提高压缩传感在关联成像应用中性能的关键。 这篇论文的贡献在于揭示了双臂对称性对压缩传感重构效果的具体影响,并...
生鲜农产品电商平台在信息经济学视角下进行模式重构,主要目的是解决信息不对称问题、质量信息传递有限性、供应链质量信息“黑箱”效应,以及质量信息甄别机制不健全等问题。在此背景下,研究者提出了从生产、流通到...
9. 互联网技术的全方位渗透使得产业边界越来越模糊,传统基于信息不对称的商业模式逐步边缘化,信息的公开透明推动了产业内部的结构分化和跨界重组。 10. 大数据、人工智能的快速发展,以及深度学习和强化学习算法...
2. 信息不对称:作者无法获取审稿专家的身份和资格信息,评审过程对外保密,增加了不信任感。 3. 评价不交互:审稿结果通常是单向决定,作者在评审后很难有机会申诉或提供反馈。 面对这些挑战,区块链技术的引入为...
文件所提及的声波曲线重构与火成岩反演应用即为利用MATLAB在地震勘探领域中的具体实践案例。 2. 小波变换 小波变换是一种在信号处理中广泛使用的数学变换方法,它能够对信号进行时频分析,得到信号在不同尺度上的...
互联网背景下的企业招聘模式重构已经在很多企业中得到了实践。例如,一些大型科技公司利用大数据分析,对求职者进行精准匹配和推荐,实现了高效的招聘。还有一些企业通过远程面试和在线测评,打破了地域限制,从全球...
其次,书中提到,跨境电商的发展背景是信息不对称的消除和消费者权力的转移。互联网时代,消费者拥有了更多的信息获取渠道,从而影响了商品定价权,制造商得以直接面对终端用户,推动了跨境电商的繁荣。而物流、支付...
传统的货运模式可能存在信息不对称、信任缺失等问题,这可能导致运输过程中的各种风险,如货物丢失、延迟交付、费用争议等。因此,重构货运信用体系旨在解决这些问题,通过建立有效的信用评价机制,提高各方参与者...
重构劳动关系管理的过程中,企业需要关注员工的参与和归属感。通过鼓励员工参与决策,不仅能够提升员工的工作满意度,还能够增强他们对企业的忠诚度和认同感。同时,有效的沟通机制能够确保管理层与员工之间的信息...
在传统的商贸零售模式中,供应商和零售商之间的关系往往存在信息不对称、利益分配不均等问题,导致供应链效率低下,成本高昂。随着消费者需求的多元化和互联网技术的发展,这种传统模式逐渐显现出局限性。盒马鲜生的...
人工智能技术的应用打破了传统供应链的信息不对称和利益冲突局面。企业之间建立了更加紧密的合作关系,实现了信息共享和资源优化配置。通过人工智能技术,企业可以更好地理解客户需求,优化产品设计,降低成本并提高...
资源中提到的C++代码函数与MATLAB中的小波函数保持一致,这意味着开发者可以在不熟悉MATLAB的情况下,利用已有的MATLAB知识来理解和使用这些C++代码。这对于跨平台开发或者需要高效计算的场景非常有利。 总的来说,...
综上所述,三角形连接变流器电流瞬时序分量的分解和重构是电力电子技术中的重要研究内容,它涉及到电力系统的稳定性、控制策略和故障诊断等多个方面。掌握这一技术对于理解和设计高性能的电力转换系统至关重要。通过...
- **沟通不畅**:缺乏有效的沟通机制会导致信息不对称,进而引发各种误解和冲突。 - **资源分配不当**:未能合理规划和分配资源可能会导致某些关键任务得不到足够支持,影响整个项目的进度。 - **需求变更频繁**...
互联网使得车企和消费者之间的信息不对称性减少,消费者对汽车信息的获取渠道更为多样化,对汽车营销的效率和方式提出了新的要求。 二、王秋凤的领导作用 王秋凤的加入为腾讯汽车带来新的发展方向和领导策略。她...
新知探究环节,学生将面对一系列轴对称图形的一半,被要求想象并重构完整的图形。这是一种培养空间想象能力的活动,有助于学生理解轴对称图形的特点:沿一条直线折叠后,图形的两边能够完全重合。在这个过程中,教师...
在研究生阶段的现代信号处理课程中,"lunfeng.zip_小波作业"这一MATLAB程序,不仅仅是学术研究的产物,更是学生深入掌握小波理论与实践相结合的工具。 "lunfeng.m"作为该程序的主文件,暗示了其在小波分析中的核心...
在现代信号处理领域,小波分析作为一种强大的...通过小波分析技术,信号处理领域的研究者和工程师能够更深入地理解信号本质,从而在实践中解决更复杂的工程问题。小波技术正成为现代数字信号处理不可或缺的工具之一。
在滤波器设计方法中,有三种主要的技术类别用于实现陷波带设计:引入附加的陷波谐振器[1,2]、嵌入式开路枝节[3]以及不对称耦合馈线[4,5]。这些技术可以帮助设计者根据不同的应用场景和要求,调整滤波器的频率响应,...