选参数类型,核心原则是:“能表达语义、又不过度设计”。下面按常见场景给你一套实用选法。
适合:简单、明确、不可再分的数据
| 场景 | 推荐 |
|---|---|
| 数量、ID、年龄 | int |
| 价格、比例 | float / double |
| 开关状态 | bool |
| 名字、描述 | string |
✅ 原则:能用基本类型就别用复杂类型
适合:有限、固定的选项
❌ 不推荐:
void setStatus(int status)
✅ 推荐:
enum Status {
ACTIVE, INACTIVE
}
void setStatus(Status status)
✅ 好处:
适合:多个相关参数一起出现
❌ 不好:
sendEmail("a@x.com", "b@x.com", "title", "body")
✅ 更好:
class Email {
String to;
String from;
String title;
String body;
}
sendEmail(Email email)
✅ 经验法则:
参数超过 3 个,考虑封装成对象
适合:强调“能力”,而不是具体实现
void save(DataStorage storage)
而不是:
void save(FileStorage storage)
✅ 好处:
| 场景 | 推荐 |
|---|---|
| 不能重复 | Set |
| 有序、可重复 | List |
| 键值对 | Map |
✅ 优先用接口:
void process(List<String> items)
而不是:
void process(ArrayList<String> items)
适合:参数“可有可无”
✅ Java:
Optional<String> description
✅ Python / JS:
def f(a, b=None):
pass
❌ 不推荐用 null 表示“没有”
process(true)
✅ 改为:process(ProcessMode.FAST)
| 情况 | 选什么 |
|---|---|
| 简单值 | 基本类型 |
| 固定选项 | 枚举 |
| 多个相关值 | 对象 |
| 强调扩展 | 接口 |
| 多个同类值 | 集合 |
| 可有可无 | Optional / 默认值 |
如果你愿意,可以告诉我:
我可以直接帮你选类型 + 改代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。