V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  xiaomingVTEX  ›  全部回复第 6 页 / 共 29 页
回复总数  573
1 ... 2  3  4  5  6  7  8  9  10  11 ... 29  
同 m1, 遇到过 touch bar 黑屏重启好了, 然后就是最近发现连华为的蓝牙耳机, 过一会声音会遇到音质变差的情况,不清楚是什么原因
2021-06-16 16:30:20 +08:00
回复了 deadtomb 创建的主题 iPad M1 iPad 理论上是不是可以刷入 macos 了?
@IgniteWhite #19 不清楚,不过我觉得直接在 mac 用 ios/ipad 应用到是很方便
2021-06-16 16:22:39 +08:00
回复了 deadtomb 创建的主题 iPad M1 iPad 理论上是不是可以刷入 macos 了?
ipad os , ios , mac, watchOS, 苹果给每一种设备造了一套系统, 哎
2021-06-16 11:09:52 +08:00
回复了 devinww 创建的主题 MacBook Pro M1 扩展坞推荐
我觉得绿联那个有线的挺好(为啥不选那种 type-c 头直插的,个人觉得兼容性不好, 比如有时候别的地方要用可能就差接不了), 闲鱼上也时不时有个人出的。
顺便问下有人用那个磁吸的充电转换头吗?
2021-06-10 11:45:04 +08:00
回复了 brader 创建的主题 MySQL mysql 表设计规范讨论
后续更新的时候再更新为新的 user_id,如果有需要识别新录入的数据,加个状态字段
2021-06-10 11:43:25 +08:00
回复了 brader 创建的主题 MySQL mysql 表设计规范讨论
直接默认插入一个 UUID 可以吗
微信读书可以
* 要微信登录, mlgb
* 网页端不能看, ....
2021-06-09 22:39:09 +08:00
回复了 rockyliang 创建的主题 Web Dev 公司内部人员使用的 web 后台需要前后端分工吗
觉得现在有两种前端, 一种是需要满足客户各种需求的,各种定制化,这种性能需求等比较复杂的前端, 还有一种就是单纯的中后台管理前端, 这种基本就是 curd 类型, 大部分由代码生成, 不怎么懂前端的后端也能修改,也能做
2021-06-09 10:46:51 +08:00
回复了 aqtata 创建的主题 程序员 你们用 get/set 吗?
贫血模型,充血模型, 学习了
2021-06-09 08:58:10 +08:00
回复了 rockyliang 创建的主题 Web Dev 公司内部人员使用的 web 后台需要前后端分工吗
不是有很多中后台 UI 吗 最近华为都开源了一个 https://devui.design/,, 百度的低代码 https://baidu.gitee.io/amis/
2021-06-09 06:46:17 +08:00
回复了 aqtata 创建的主题 程序员 你们用 get/set 吗?
@walleL #29 极客时间 > 软件设计之美 > 14 | 面向对象之封装:怎样的封装才算是高内聚? > http://gk.link/a/10r9Q
2021-06-08 22:53:25 +08:00
回复了 aqtata 创建的主题 程序员 你们用 get/set 吗?
@xingheng #27 确实, 反正万物皆对象就行了, 哈哈
2021-06-08 21:17:09 +08:00
回复了 aqtata 创建的主题 程序员 你们用 get/set 吗?
@3dwelcome #20 如果只是从 OOP 角度来说 get/set 是与对象的封装不符的,这样隐藏了对象的真实意图, 但是比如 java 中的 POJO 都有一个 get/set,引用下面的评论,POJO 作为了一种数据的载体,并不仅仅局限于对象的封装;
另外, 类只是对象的一种表现形式(比如 java );再者也不是非要强制把 get/set 修改掉,毕竟只是一种编程范式
2021-06-08 17:22:35 +08:00
回复了 aqtata 创建的主题 程序员 你们用 get/set 吗?
## 摘录:14 | 面向对象之封装:怎样的封装才算是高内聚?

封装的重点在于对象提供了哪些行为,而不是有哪些数据。也就是说,即便我们把对象理解成数据加函数,数据和函数也不是对等的地位。函数是接口,而数据是内部的实现,正如我们一直说的那样,接口是稳定的,实现是易变的。

理解了这一点,我们来看一个很多人都有的日常编程习惯。他们编写一个类的方法是,把这个类有哪些字段写出来,然后,生成一大堆 getter 和 setter,将这些字段的访问暴露出去。这种做法的错误就在于把数据当成了设计的核心,这一堆的 getter 和 setter,就等于把实现细节暴露了出去。

一个正确的做法应该是,我们设计一个类,先要考虑其对象应该提供哪些行为。然后,我们根据这些行为提供对应的方法,最后才是考虑实现这些方法要有哪些字段。

封装的重点在于对象提供了哪些行为,而不是有哪些数据。也就是说,即便我们把对象理解成数据加函数,数据和函数也不是对等的地位。函数是接口,而数据是内部的实现,正如我们一直说的那样,接口是稳定的,实现是易变的。理解了这一点,我们来看一个很多人都有的日常编程习惯。他们编写一个类的方法是,把这个类有哪些字段写出来,然后,生成一大堆 getter 和 setter,将这些字段的访问暴露出去。这种做法的错误就在于把数据当成了设计的核心,这一堆的 getter 和 setter,就等于把实现细节暴露了出去。一个正确的做法应该是,我们设计一个类,先要考虑其对象应该提供哪些行为。然后,我们根据这些行为提供对应的方法,最后才是考虑实现这些方法要有哪些字段。


```
class User {
private String username;
private String password;

...

// 修改密码
public void setPassword(final String password) {
this.password = password;
}
}
```

但我们鼓励的做法是,把意图表现出来:

```
class User {
private String username;
private String password;

...

// 修改密码
public void changePassword(final String password) {
this.password = password;
}
}
```

这两段代码相比,只是修改密码的方法名变了,但二者更重要的差异是,一个在说做什么,一个在说怎么做。将意图与实现分离开来,这是一个优秀设计必须要考虑的问题。

不过,在真实的项目中,有时确实需要暴露一些数据,所以,等到你确实需要暴露的时候,再去写 getter 也不迟,你一定要问问自己为什么要加 getter 。至于 setter,首先,大概率是你用错了名字,应该用一个表示意图的名字;其次,setter 通常意味着修改,这是我们不鼓励的。

## 评论区
* 沧浪之水:
至于平时说的一些 POJO 的对象,可以看成是数据载体,是可以加 getter,setter 的(没有这些默认的 getter,setter,很多第三方的数据转化都很不方便,比如 json,sql 等)。在使用的时候,不归结为对象就可以了。

* 作者回复: 能分清楚面向对象和 Java 语言,这就是一个很好的区分。能分清楚传输数据和业务对象,这就是一个很好的区分。
2021-06-08 15:21:15 +08:00
回复了 aqtata 创建的主题 程序员 你们用 get/set 吗?
get/set java pojo,
可以看看极客时间 软件设计之美 14 面向对象之封装, 怎样的封装才算是高内聚
1 ... 2  3  4  5  6  7  8  9  10  11 ... 29  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1402 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 17:30 · PVG 01:30 · LAX 10:30 · JFK 13:30
Developed with CodeLauncher
♥ Do have faith in what you're doing.