应该怎么与这位同事(程序员)沟通?

2015-01-13 16:30:17 +08:00
 yuankui
事情是这样的
我和另外一个同事在做一个APP服务端,用的是spring-mvc(由于要尽快发布,因此各个模块的实现较为粗糙)
登录(验证)模块是这位同事做的,今天我简单看了一下,实现方式是要求客户端每次请求,所有的请求都带上用户名密码,然后有个入口来验证这个用户名密码(查询数据库),然后再交给后续的流程处理。
是的,这里的问题很多。我就提出了不能每次请求来都查询数据库

我:同学,你这个验证模块是每次都要查询数据吗?
同学:哦,是的,(然后他好像发现这里是有问题得了),现在写的比较简单,我后面再搞一下
我:你打算怎么搞
同学:加个缓存吧
我:那直接用session呗,session不就是一个缓存吗?
同学:手机端又不是浏览器,怎么会有session
我:手机端也可以有啊,你让客户端往http请求加个cookie就好了啊
同学:那这么说客户端就麻烦了,有些客户端就不想写,你不能强迫客户端
我:这有什么强迫的,就set cookie,调个函数就完了,有什么问题吗?
同学:算了,我还是自己写个缓存吧
我:session不就是缓存吗?你何必自己造轮子呢?而且这里面有很多问题你要考虑的
同学:呵呵,你想多了,没那么复杂的
下文略。。。。

我真的想多了吗?
其实我的目的就是劝这位同事不要重复造轮子,应该是我说话的方式不对?请问该怎么跟他沟通?
9645 次点击
所在节点    程序员
84 条回复
kisshere
2015-01-13 16:43:50 +08:00
每次请求的时候附带一个参数也可以啊,这个参数把user_id和username进行可逆式加密不就得了,服务器端再解密一次判断是否正确就OK啦,何必查询数据库
andybest
2015-01-13 16:49:08 +08:00
“手机端又不是浏览器,怎么会有session”

到这句对话就应该终止了
yuankui
2015-01-13 16:52:42 +08:00
@kisshere 这种思想比较新颖,不过我的目的不是讨论技术方案,我是实在想不到什么办法能跟这位同事有效沟通了。。
yuankui
2015-01-13 16:53:33 +08:00
@andybest 终止了之后,问题还是要解决的。。
Havee
2015-01-13 16:55:41 +08:00
确实想多了,前提是赶工
怎么实现你管人家干嘛,后期需要优化的时候拿数据出来说事呗

说话方式也有些问题,不要质疑对方,一质疑,对方就被如被踩着尾巴跳出来了
就算要对方改,也不要用引导的方式(如果你们是平级的话),引导用不好容易让对方认为你含沙射影,直接提出来

譬如,兄弟,你这样每次查数据库给我很大压力呀,帮帮忙咯,后面请你吃饭。

然后对方改是因为帮助你,对方有成就感,而不是被质疑
aszxqw
2015-01-13 16:59:23 +08:00
@Havee 不怎么觉得,你这样会把那个人宠坏的,说不定这么几次下去,他都变傲娇了,觉得每次都是自己赏脸帮别人。
Havee
2015-01-13 17:02:03 +08:00
@aszxqw 如果是同事,大家都是成年人,差别只是项目经验,直接质疑会把对方引向人事斗争的
niboy
2015-01-13 17:10:56 +08:00
只抛出问题,然后他怎么解决就由他了。
yuankui
2015-01-13 17:13:32 +08:00
@Havee 的确,我也是一边沟通,一边在想办法尽量用委婉的方式来表达我的意思。
就这件事来说,的却是我多管闲事了
但是其他部分,涉及到架构的东西,如果仍有自己拍脑袋的化,整个系统都会很难搞。
lincanbin
2015-01-13 17:13:55 +08:00
Api编程一般是在URL中构造Auth参数,例如携带一个token,cookie确实是低效的做法,Api编程中基本见不到。
另外真没那么复杂,一般只要把Auth参数加入封装的发包类就行,复杂度肯定是低于cookie的
aszxqw
2015-01-13 17:14:45 +08:00
@Havee
但是你的办法也只是为以后的人事斗争埋下伏笔。
个人觉得问题确实应该指出,但是语气上尽量缓和就行了。
yuankui
2015-01-13 17:16:16 +08:00
@niboy 谢谢,这个思路不错。不过有时间的情况是,我认为是问题的问题,别人不会认为是问题,他就不会去弄。我如果弄的话,又会遭到他的反感:你怎么能随便改我的设计之类的。。
yuankui
2015-01-13 17:18:08 +08:00
@aszxqw
@lincanbin
@niboy 忘了交待一个背景
该同事工作经验应该算比我多个2-3年,他是不会会觉得我提出的办法比他好(假如),他会没面子。
oott123
2015-01-13 17:19:44 +08:00
其实我觉得加个缓存有什么问题么……

倒是你提到的 cookies 确实会加大客户端开发难度……
唔,就算我们这里不考虑 cookies ,采用其它的 session 的实现,一般情况下都是存一个 token 吧。(你不会想告诉我说你要在 session 里存用户名和密码吧……难道存 uid: 1, auth: true 么……)
存一个 token 的话……就对服务器负载而言,和用缓存并未有很显然的区别吧。
hcymk2
2015-01-13 17:20:32 +08:00
@yuankui
就算你的同事有类似的想法,请先不要这样想。
zhicheng
2015-01-13 17:23:00 +08:00
@kisshere 如果在客户端生成,这个方案不可行。如果在服务器生成,会带来密钥管理的问题,一个密钥泄露,所有用户信息全部泄露。
@yuankui 每次传用户名和密码,也是正确的实现方案,参考 HTTP Basic Authentication,有标准协议支持,但注意使用 HTTPS。对于查库开销,你用 session 也一样要查库。
huigeer
2015-01-13 17:25:20 +08:00
引导不成功, 估计以后难相处, 奏请cto, 开会讨论技术问题, 顺带纠正态度问题
foursking
2015-01-13 17:27:46 +08:00
你们有上级吗 有的话找上级谈下这个问题,程序员之间还是沟通顺利最重要
yuankui
2015-01-13 17:28:07 +08:00
@huigeer 如果没有CTO,如果我说懂技术的就我们两个人,这事是不是就不好处理了。。
yuankui
2015-01-13 17:33:07 +08:00
@zhicheng
@oott123
谢谢你们的技术方案,我会虚心学习了解一下

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

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

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

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

© 2021 V2EX