`
laodizhuq
  • 浏览: 26132 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

万能接口带来的困扰

阅读更多
我们在写代码时,经常会碰到有多种操作可以采用一个接口来完成的情况。

比如一个员工信息,我在提供查询接口时,支持员工id和员工名称的查询。
这样我们就可以采用一种查询接口

class UserIdDO{
    private long userId;
    private String userName;
}

UserDO queryUserById(UserIdDO userIdDO){
......
}



这样我们只要写一个接口就可以满足两种参数的查询了,看起来这个程序员省了很多事情,少写了一个方法。

但是给后续工作就带来了麻烦。
首先我们要统计员工id和员工名称这量种查询分别要占多少的量,本来我们有现成的统计每个接口访问量的工具,但是由于这个是通过参数来区分的,我们就无法做到了。
其次,当我们不再支持员工名称查询时,我们就需要修改这个接口,这样就会殃及到原先用员工id查询的系统。
0
1
分享到:
评论
2 楼 laodizhuq 2010-03-12  
谢谢您的提议。

其实这个问题是我在维护原有系统时碰到的,
现在的问题是,已经很难修改这类接口了,因为已经有十多个系统中使用这个接口,要修改这类接口起码得花半年的时间,将各个系统都引导到新的接口上面。

这个问题主要是要告诫新程序员在写代码时不要贪图方便,弄出一些很看似通用的接口。

结果等系统做大后,给维护和测试人员带来很大的麻烦。
1 楼 Heis 2010-03-11  
事实上,这种做法在会让别的程序员非常迷惑,写代码不应该只让自己能看明白。方法明写着用Id来查询,结果却是用名字来查询?

必须承认java是很笨的语言,代码应该写则要写,不要求省事。设想一下,如果还需要按其他条件来查询,比如性别,出生日期,你是不是又得改你的类和方法了。增加一个方法是不会对系统造成影响的,但是修改则影响较大。

我的建议是,对于只要一个或两个查询条件,可以以条件为参数来设计方法。当条件多于三个,可以用一个类来对其封装(或者可以考虑直接传sql,但是要考虑sql注入的问题),但是为了防止这个类被滥用,应该将类设为final。方法,类的职责和名字一定要明确,不要试图一个方法多种用途,这样会让别人很迷惑。查询返回的结果和查询的条件应该分为两个类,因为他们的职责不一样。

我建议的一些API形式:
class UserDAO{
UserPO queryByID(String id){}

UserPO queryByIDandName(String id,String name){}

UserPO queryBySQL(String whereStatement){}

UserPO query(UserSearchCriteria criteria){}
}

相关推荐

    USB 摄像头 万能 驱动

    万能驱动通过覆盖各种USB摄像头的兼容需求,减少了用户寻找和安装特定品牌驱动的困扰。 在使用过程中,可能会遇到的问题包括摄像头无法识别、画面质量差、延迟高等。这些问题通常可以通过更新驱动程序、检查USB接口...

    万能密码查看器 V2.49

    这款软件的出现,无疑为许多人解决了密码丢失带来的困扰,但同时也引发了一系列关于隐私保护和信息安全的讨论。 首先,我们来看看这个软件的核心功能。它通过扫描系统内存和已安装的应用程序,来查找并显示密码,...

    电脑万能网卡驱动程序

    它具有广泛兼容性,能够适应市面上多种不同品牌和型号的网卡,帮助用户快速恢复网络连接,从而避免了因为找不到对应驱动而带来的困扰。 在计算机硬件中,网卡(Network Interface Card,NIC)是负责处理计算机与...

    电子功用-国际通用万能电源插座

    对于经常出差或者喜欢出国旅游的人们来说,一个可靠的万能电源插座可以避免因不兼容的电源接口带来的困扰,让充电设备随时可用。 在选择国际通用万能电源插座时,用户需要注意以下几点: 1. 安全认证:确保产品符合...

    USB万能驱动程序

    然而,由于USB设备种类繁多,每种设备可能需要特定的驱动程序才能在操作系统中正常工作,这给用户带来了安装和管理驱动的困扰。USB万能驱动程序就是为了缓解这一问题而设计的。 USB 2.0,是USB规范的一个版本,...

    万能摄像头驱动

    万能驱动的出现,主要是因为市场上摄像头种类繁多,每款产品的驱动可能不尽相同,给用户带来了安装上的困扰。这种驱动程序通常包含了多种摄像头厂商的驱动兼容性,因此被称为“万能”。 摄像头驱动是计算机与摄像头...

    手提电脑触摸板鼠标自动禁止程序(万能)

    这样,当你需要使用物理鼠标时,无需手动进入控制面板调整触摸板设置,只需插入鼠标,系统便会自动识别并禁用触摸板,避免了因误触造成的困扰。 在Windows操作系统中,通常可以通过以下步骤来手动禁用触摸板: 1. ...

    驱动之家万能USB驱动

    通过"驱动之家万能USB驱动",用户可以轻松管理和优化电脑上的USB设备,提高工作效率,减少因驱动问题带来的困扰。对于非专业用户来说,这是一款非常实用的工具,能够帮助他们解决日常使用中遇到的大部分USB驱动问题...

    万能幻灯-好用测试过兼容所有浏览器

    "万能幻灯"是一个经过全面测试,证明能够兼容所有浏览器的jQuery插件,它极大地简化了开发者在页面开发中的工作,避免了因浏览器兼容性问题带来的困扰。 jQuery是一个广泛使用的JavaScript库,它的简洁API和强大的...

    万能USB驱动

    总的来说,万能USB驱动为用户提供了便捷的USB设备驱动管理,减少了在多设备环境中查找和安装驱动的困扰,提升了设备的兼容性和系统的稳定性。然而,保持驱动程序的更新也是至关重要的,因为新驱动通常包含性能改进和...

    万能网卡驱动

    【万能网卡驱动】是计算机领域中一个非常实用的工具,主要针对的是网络适配器的驱动程序问题。在日常使用电脑时,有时会遇到...在日常使用电脑时,合理利用这类工具,能够显著提高工作效率,减少因硬件问题带来的困扰。

    万能验证码识别 若快万能验证码识别 v1.0.1.9

    总的来说,若快万能验证码识别 v1.0.1.9 是一款高效且精准的验证码识别工具,旨在帮助用户摆脱手动输入验证码的困扰,提高工作效率,尤其适合那些需要频繁处理验证码的场景。通过云端的人工智能技术支持,该软件在...

    名校联盟湖南省慈利一中高二物理万能充电器的原理探究PPT学习教案.pptx

    然而,多种多样的充电器带来的不仅是便利,还有无尽的烦恼:不同设备需要不同规格的充电器,插头形状各异,电压电流要求不一,这不仅造成了使用者的困扰,还产生了大量的电子废弃物。为此,湖南省慈利一中的高二学生...

    中央控制系统.pdf

    然而,设备数量的增多也带来了控制上的困扰,传统的遥控器操作方式变得复杂且难以管理,环境控制也无法根据实际需求灵活调整。 中央控制系统作为解决这一问题的关键,通过集成化的智能设计,实现了对众多电气设备的...

    BaseRecyclerViewAdapeter

    然而,其复杂的接口和设置过程往往给开发者带来困扰,BaseRecyclerViewAdapterHelper正是为了解决这个问题而诞生的。 该库的核心功能在于提供了一个万能适配器,可以支持多种不同的视图类型(ViewHolder),使得...

    USB通用驱动

    USB通用驱动,也被称为USB通用串行总线驱动,是计算机操作系统中...总的来说,USB通用驱动对于日常使用和维护计算机设备至关重要,它能够确保我们的USB设备正常运行,提高工作效率,同时减少了由于驱动问题带来的困扰。

    MTK通用驱动_tool_mtk驱动inf_mtk通用驱动_mtk_

    MTK,全称为MediaTek,是一家著名的半导体公司,主要生产手机和平板电脑的系统级芯片。在进行MTK设备的刷机操作时,驱动...使用这个工具包,用户可以更安全、更高效地执行他们的刷机操作,避免因驱动问题带来的困扰。

    摩托罗拉手机驱动(经本人测试绝对没问题)

    摩托罗拉手机驱动是连接摩托罗拉手机与个人电脑的重要桥梁,主要用于数据传输、软件更新、设备调试等操作。这款驱动程序被描述为“万能驱动”...正确安装和管理驱动可以提高设备的使用体验,减少因连接问题带来的困扰。

Global site tag (gtag.js) - Google Analytics