你们用 get/set 吗?

2021-06-08 15:05:01 +08:00
 aqtata
getName()/setName(value)



name()/name(value)

你们习惯用哪种?
8654 次点击
所在节点    程序员
58 条回复
xiaomingVTEX
2021-06-09 10:46:51 +08:00
贫血模型,充血模型, 学习了
libook
2021-06-09 11:45:32 +08:00
是用属性还是方法,看需求。

如果说命名的话,在可读性上还是推荐代码能体现谓语、名词原型和规模(一个还是一组),而这种体现可以直接写在名字里,也可以在调用路径上,比如 name.set(),当然 A.name='jake'语法上已经隐含了谓语。
ericls
2021-06-09 12:45:53 +08:00
这个工具解决什么问题
你有没有遇到这个问题

如果遇到 为什么不用?
no1xsyzy
2021-06-09 13:02:36 +08:00
(setf (car xxx) yyy) ( common lisp 系)?
还是 (set-car! xxx yyy) ( scheme 系)?
janda
2021-06-09 16:30:38 +08:00
lombok ?
fyxtc
2021-06-09 17:18:09 +08:00
兄弟你这个头像很复古,勾起了我十几年前的回忆
crclz
2021-06-09 18:22:33 +08:00
{get; set;}
promisenev
2021-06-09 18:48:02 +08:00
case class 爽歪歪 scala 舒服
pkoukk
2021-06-09 18:55:04 +08:00
c# {get;set}
go Name() SetName()
ZhaoHuiLiu
2021-06-09 21:12:37 +08:00
不明白,为什么 Java 获取字符串长度是 "test".length() 而不是 "test".getLength() 不觉得别扭吗?
Fule
2021-06-09 21:38:27 +08:00
@xingheng sorry, YYDS means 永远的神,毕竟近几个版本更新加入了很多使用 `=>`的语法,比如

public int Add (int a, int b) => a + b;
Fule
2021-06-09 21:45:19 +08:00
说回来,对于楼主原始的问题,既然是用作一个方法(带括号调用),作为方法名,感觉还是带动词的名字比较合适:
getName();
setName("");
JerryCha
2021-06-09 21:47:03 +08:00
(() => ((() => SETvALUEwITHpARAMETER(name, value))(name))(value))()
aoeui
2021-06-09 22:14:06 +08:00
Java: a.setValue(a.getValue() + 1);
C#: a.Value++;
tctc4869
2021-06-10 14:10:58 +08:00
java 的 get/set 规比后来新生语言里的 set/get 规范差是肯定
wangshanshan
2021-06-10 17:48:12 +08:00
@xiaomingVTEX 对于这个,理论上确实应该如此。可是在实际上,由于项目的中的对象各有不同,它所拥有的字段也各有不同,使用 get/set 可以通用于所有字段,如果给封装对象行为的名字 ,太过于独特
Amit
2021-06-10 18:23:05 +08:00
get/set 并不等价于获取 /设置变量值,里面是可以有逻辑的,比如前端传的一个非必填的参数,我可以在 get 方法里设置默认值(这不符合贫血模型但这种逻辑写到 service 中就太丑了),还有一些框架序列化或反序列化的时候使用 get/set 命名规则,不按这个来会出问题
myCupOfTea
2021-06-15 14:52:50 +08:00
java get/set 命名还不是早期不支持 proxy 吗,
像 js,python 这种天生支持 get/set,还非要用 get/set 干嘛呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/782167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX