s*****w 发帖数: 1527 | 1 我们组的要求是web backend 把error message string 发给web front end。
对此我非常反感,我认为只发error code就可以。
backend code and frontend code共享一个error_message_strings文件,因为2个repo
共享一个文件用来build,不会有不磨合的地方。
大家请批评指教。 |
s********e 发帖数: 340 | 2 Code更简洁些,但是也区别不多,可能其他人为了API的使用方便吧,省去了别人调用
API时,看到Code还要去查是什么意思。
repo
【在 s*****w 的大作中提到】 : 我们组的要求是web backend 把error message string 发给web front end。 : 对此我非常反感,我认为只发error code就可以。 : backend code and frontend code共享一个error_message_strings文件,因为2个repo : 共享一个文件用来build,不会有不磨合的地方。 : 大家请批评指教。
|
s********e 发帖数: 340 | 3 Code更简洁些,但是也区别不多,可能其他人为了API的使用方便吧,省去了别人调用
API时,看到Code还要去查是什么意思。
repo
【在 s*****w 的大作中提到】 : 我们组的要求是web backend 把error message string 发给web front end。 : 对此我非常反感,我认为只发error code就可以。 : backend code and frontend code共享一个error_message_strings文件,因为2个repo : 共享一个文件用来build,不会有不磨合的地方。 : 大家请批评指教。
|
m*****n 发帖数: 3575 | 4 错误有保密的需求吗?
没有就发更好。便于frontend写逻辑 |
s*****w 发帖数: 1527 | 5 我不愿意从web backend发message string的原因是反正已经发了error code。
而且如果是java backend, 尼玛的还要搞出一大堆error class,神经病啊 |
n******t 发帖数: 4406 | 6 照理說應該是直發code。
但是這個particular use case,我覺得你的argument贏不了。web本來就是一個講究開
發速度不注重性能的地方,都發過去所有用你service的人都省事,至於最後用這個東
西的人多幾個cpu cycle,nobody cares。
repo
【在 s*****w 的大作中提到】 : 我们组的要求是web backend 把error message string 发给web front end。 : 对此我非常反感,我认为只发error code就可以。 : backend code and frontend code共享一个error_message_strings文件,因为2个repo : 共享一个文件用来build,不会有不磨合的地方。 : 大家请批评指教。
|
y********a 发帖数: 1 | 7 你return 400也不说request哪里错了,人怎么debug?跟你integrate一个复杂的api,
要pass十几个argument,咋知道是哪个argument忘了发,哪个发错了?软件开发最重要
的就是clear communication |
n******t 发帖数: 4406 | 8 你說的話技術上來說沒道理,因爲兩邊都有error string,所以error code是夠的。
同時,因爲他周圍most likely都是你這樣的人,所以我也覺得他該這麼幹。
【在 y********a 的大作中提到】 : 你return 400也不说request哪里错了,人怎么debug?跟你integrate一个复杂的api, : 要pass十几个argument,咋知道是哪个argument忘了发,哪个发错了?软件开发最重要 : 的就是clear communication
|
s********e 发帖数: 340 | 9 楼主说是用Java开发,自定义一个Error类,里面两个成员变量,一个是Code,一个是
Message。Server直接把Error类对象发给前段,前段Code和Message都有了,这不就两
全其美了吗。这点事有什么难解决的地方?
【在 n******t 的大作中提到】 : 你說的話技術上來說沒道理,因爲兩邊都有error string,所以error code是夠的。 : 同時,因爲他周圍most likely都是你這樣的人,所以我也覺得他該這麼幹。
|
s********e 发帖数: 340 | 10 楼主说是用Java开发,自定义一个Error类,里面两个成员变量,一个是Code,一个是
Message。Server直接把Error类对象发给前段,前段Code和Message都有了,这不就两
全其美了吗。这点事有什么难解决的地方?
【在 n******t 的大作中提到】 : 你說的話技術上來說沒道理,因爲兩邊都有error string,所以error code是夠的。 : 同時,因爲他周圍most likely都是你這樣的人,所以我也覺得他該這麼幹。
|
s*****w 发帖数: 1527 | 11 你们java就是反人类,弄那么多class神经病
【在 s********e 的大作中提到】 : 楼主说是用Java开发,自定义一个Error类,里面两个成员变量,一个是Code,一个是 : Message。Server直接把Error类对象发给前段,前段Code和Message都有了,这不就两 : 全其美了吗。这点事有什么难解决的地方?
|
o********s 发帖数: 971 | 12 这么做利弊都很明显。
这个是比较老式的处理方法。优点是简洁许多,而且方便globalization 。http
response 就是这个做法。
现在的趋势是一个API大家用,你不能期望所有API 用户都用你的code repo。所以你就
没办法采用这个模式了。
所以一般建议发string |
s*****w 发帖数: 1527 | 13 我们组的情况是,这个frontend backend都是自己组的,别的组不会用。
但是本组一大堆写java的老印。
【在 o********s 的大作中提到】 : 这么做利弊都很明显。 : 这个是比较老式的处理方法。优点是简洁许多,而且方便globalization 。http : response 就是这个做法。 : 现在的趋势是一个API大家用,你不能期望所有API 用户都用你的code repo。所以你就 : 没办法采用这个模式了。 : 所以一般建议发string
|
l********n 发帖数: 490 | 14 前端是怎样access error_message_strings文件的? |
n******t 发帖数: 4406 | 15 這個和語言沒有任何關係。debug和錯誤處理應該分離,這是一個系統設計的基本原則。
again,和成天只能數loc的人說是對牛彈琴。
【在 s********e 的大作中提到】 : 楼主说是用Java开发,自定义一个Error类,里面两个成员变量,一个是Code,一个是 : Message。Server直接把Error类对象发给前段,前段Code和Message都有了,这不就两 : 全其美了吗。这点事有什么难解决的地方?
|
y********a 发帖数: 1 | 16 哪来的傻逼台巴岛蛙,滚回井里去
【在 n******t 的大作中提到】 : 你說的話技術上來說沒道理,因爲兩邊都有error string,所以error code是夠的。 : 同時,因爲他周圍most likely都是你這樣的人,所以我也覺得他該這麼幹。
|
m*****n 发帖数: 3575 | 17 C++的规矩太老套啦
非要把每个错误都弄一个错误码,新错误还要更新错误码词典。
我觉得前后端最重要的是沟通顺畅,发错误消息没什么错。
則。again,和成天只能數loc的人說是對牛彈琴。
【在 n******t 的大作中提到】 : 這個和語言沒有任何關係。debug和錯誤處理應該分離,這是一個系統設計的基本原則。 : again,和成天只能數loc的人說是對牛彈琴。
|
w*****g 发帖数: 4298 | 18 Backend发localized string也可以的,支持web, mobile, |
s*****w 发帖数: 1527 | 19 both backend/frontend build can pull a public folder
【在 l********n 的大作中提到】 : 前端是怎样access error_message_strings文件的?
|
n******t 发帖数: 4406 | 20 不要急,對着個網上的人爆粗跳腳只能顯示你生活壓力大不愉快而已。
我剛才說了,這件事情不是技術問題。如果要求來自平級,別惹事,這就麼幹完事。如
果下級,按正確做法幹。
當然技術上面對的還是要講,否則如果還想以後當管理崗,還是要知道怎麼做的。
【在 y********a 的大作中提到】 : 哪来的傻逼台巴岛蛙,滚回井里去
|
n******t 发帖数: 4406 | 21 爲什麼你們總覺得這事情和語言有關係?這是設計原則, 和語言沒有關係。
【在 m*****n 的大作中提到】 : C++的规矩太老套啦 : 非要把每个错误都弄一个错误码,新错误还要更新错误码词典。 : 我觉得前后端最重要的是沟通顺畅,发错误消息没什么错。 : : 則。again,和成天只能數loc的人說是對牛彈琴。
|
y********a 发帖数: 1 | 22 自以为是的岛蛙一个。现实中这样不知深浅的岛蛙早被我捏死好几只了
【在 n******t 的大作中提到】 : 不要急,對着個網上的人爆粗跳腳只能顯示你生活壓力大不愉快而已。 : 我剛才說了,這件事情不是技術問題。如果要求來自平級,別惹事,這就麼幹完事。如 : 果下級,按正確做法幹。 : 當然技術上面對的還是要講,否則如果還想以後當管理崗,還是要知道怎麼做的。
|
n******t 发帖数: 4406 | 23 同學,我們都知道現實生活中你這樣的人即使高你一級叫你幹啥就得幹啥,在網上撂狠
話是沒用的。你想想你你這麼一個entry level的dev,能捏死誰吧?
就是幹點打雜的活,別太在意了。好好討論技術,要不就是說人事,講人話也行。
【在 y********a 的大作中提到】 : 自以为是的岛蛙一个。现实中这样不知深浅的岛蛙早被我捏死好几只了
|
m*****n 发帖数: 3575 | 24 老套的C和C++受制于强类型没有办法才只发错误码。到现在大家对错误码的意见依然非
常大。类似于Windows的错误码,只有微软自己的人懂。
既然是做Web系统,不是那么硬件消耗大的,理所当然把这层错误码脱掉,直接发错误
信息。
就你现在编译任何一个,或者解释运行任何一个语言,出错只给错误码么?如果遇到这
种语言你不跳脚?同理可用于前端接后端的错误码。
【在 n******t 的大作中提到】 : 爲什麼你們總覺得這事情和語言有關係?這是設計原則, 和語言沒有關係。
|
p*a 发帖数: 592 | 25 属实,发个错误消息就行了,狗屁错误码没人用,而且如果错误消息和错误码不匹配怎
么办,你验证吗?你说可以从同一个repo取消息和错误码,但是如果大家不在一个
branch怎么办?
【在 m*****n 的大作中提到】 : C++的规矩太老套啦 : 非要把每个错误都弄一个错误码,新错误还要更新错误码词典。 : 我觉得前后端最重要的是沟通顺畅,发错误消息没什么错。 : : 則。again,和成天只能數loc的人說是對牛彈琴。
|
n******t 发帖数: 4406 | 26 我先問你一個問題,一個編譯器作爲一個軟件來說他的功能是什麼?debug編譯器指的
又是什麼?
【在 m*****n 的大作中提到】 : 老套的C和C++受制于强类型没有办法才只发错误码。到现在大家对错误码的意见依然非 : 常大。类似于Windows的错误码,只有微软自己的人懂。 : 既然是做Web系统,不是那么硬件消耗大的,理所当然把这层错误码脱掉,直接发错误 : 信息。 : 就你现在编译任何一个,或者解释运行任何一个语言,出错只给错误码么?如果遇到这 : 种语言你不跳脚?同理可用于前端接后端的错误码。
|
s*****w 发帖数: 1527 | 27 error code can be bitmap, 这样几个error code可以一次送回UI,详细不说,但的确
是我们的use case.
【在 m*****n 的大作中提到】 : 老套的C和C++受制于强类型没有办法才只发错误码。到现在大家对错误码的意见依然非 : 常大。类似于Windows的错误码,只有微软自己的人懂。 : 既然是做Web系统,不是那么硬件消耗大的,理所当然把这层错误码脱掉,直接发错误 : 信息。 : 就你现在编译任何一个,或者解释运行任何一个语言,出错只给错误码么?如果遇到这 : 种语言你不跳脚?同理可用于前端接后端的错误码。
|
s*****w 发帖数: 1527 | 28 "如果大家不在一个branch怎么办"
你要自己的build都做不好,那还能怪谁?
如果是那样,api call一样会出问题,因为api的parameters可以变动,引发前后端的
不协调。
【在 p*a 的大作中提到】 : 属实,发个错误消息就行了,狗屁错误码没人用,而且如果错误消息和错误码不匹配怎 : 么办,你验证吗?你说可以从同一个repo取消息和错误码,但是如果大家不在一个 : branch怎么办?
|
m*****n 发帖数: 3575 | 29 反正你可以抗拒;
但在对方眼里你就是为了偷懒而强词夺理。
你说的惯例,在你看来是天经地义,在对方眼里是陈规陋习。
【在 s*****w 的大作中提到】 : error code can be bitmap, 这样几个error code可以一次送回UI,详细不说,但的确 : 是我们的use case.
|
m*****n 发帖数: 3575 | 30 那后端的功能是什么?
如果你认为编译器的功能就是服务程序员,
那人家认为后端的功能就是服务前端,有什么不合理吗?
在我看来只写错误码不给错误消息,就相当于厨师做好饭,在窗口喊,好了,来拿!
人家当然有理由去抱怨你不给服务。
当然,如果这个饭店几乎只有厨师,可以摆这个架子。
【在 n******t 的大作中提到】 : 我先問你一個問題,一個編譯器作爲一個軟件來說他的功能是什麼?debug編譯器指的 : 又是什麼?
|
n******t 发帖数: 4406 | 31 所以你現在知道你之前的類比錯了?
"就你现在编译任何一个,或者解释运行任何一个语言,出错只给错误码么?如果遇到这
你顯然在這裏混淆了編譯器的調試(也就是編譯器如果不work的出錯信息),和給程序
員的出錯信息(在這個情況下,其實是編譯器的功能)這兩件事。腦子不想清楚,啥事
情都幹不好。寫程序也一樣。
後端的功能是服務前端,但是卻不是服務前端程序員,但是debug功能的確需要expose
給程序員。
所以errcode是必須要有的,因爲前端程序只知道errcode,不懂什麼errmsg。同時因爲
需要保持一致和維護err code和errmsg的infomation,通信的時候應該只發code,而讓
前後端用errcode->errmsg的library,在debug的時候顯示出錯信息。
但是這麼一個簡單的事情,一般人已經各種不懂了,而且還紛紛覺得自己牛逼,所以我
告訴他了,把msg寫出去完事,早日升到manager再說。
指的 |
s*****w 发帖数: 1527 | 32 java除了产生一大堆垃圾程序还能干什么?
我在这个组3年了,java程序的api tests 如果偶尔有一天全pass了,全组一片沸腾,
然后再继续天天出错。。。
【在 m*****n 的大作中提到】 : 反正你可以抗拒; : 但在对方眼里你就是为了偷懒而强词夺理。 : 你说的惯例,在你看来是天经地义,在对方眼里是陈规陋习。
|
m*****n 发帖数: 3575 | 33 Explicit is better than Implicit.
—— Guido Van Rossum
expose給程序員。
爲需要保持一致和維護err code和errmsg的infomation,通信的時候應該只發code,而
讓前後端用errcode->errmsg的library,在debug的時候顯示出錯信息。
【在 n******t 的大作中提到】 : 所以你現在知道你之前的類比錯了? : "就你现在编译任何一个,或者解释运行任何一个语言,出错只给错误码么?如果遇到这 : 你顯然在這裏混淆了編譯器的調試(也就是編譯器如果不work的出錯信息),和給程序 : 員的出錯信息(在這個情況下,其實是編譯器的功能)這兩件事。腦子不想清楚,啥事 : 情都幹不好。寫程序也一樣。 : 後端的功能是服務前端,但是卻不是服務前端程序員,但是debug功能的確需要expose : 給程序員。 : 所以errcode是必須要有的,因爲前端程序只知道errcode,不懂什麼errmsg。同時因爲 : 需要保持一致和維護err code和errmsg的infomation,通信的時候應該只發code,而讓 : 前後端用errcode->errmsg的library,在debug的時候顯示出錯信息。
|
n******t 发帖数: 4406 | 34 平常上班瞎扯蛋的事情,別帶這邊來,我沒興趣。
【在 m*****n 的大作中提到】 : Explicit is better than Implicit. : —— Guido Van Rossum : : expose給程序員。 : 爲需要保持一致和維護err code和errmsg的infomation,通信的時候應該只發code,而 : 讓前後端用errcode->errmsg的library,在debug的時候顯示出錯信息。
|
md 发帖数: 38 | 35 你大概说的是Java的stack trace。 这才是Java比C++最强大的地方。
错误码和错误信息最大的问题是标准化,操蛋的错误信息会说出现这个问题要么是情况
A,要么是情况B,到底啥问题你自己猜。错误码做得最好的是Oracle DB,但他家的标
准化是花了大量精力的。
一个更好的Practice是后端产生错误码/错误信息时,产生一个UUID,一并发到前端,
在后端LOG这个UUID,同时把Java的Exception包括所有的Stack trace LOG下来。
Debug时只要在后端查找这个关联UUID,就能定位到哪个类哪条语句出错,至于为啥出
错,就看程序员的功力和对代码的熟悉程度。
【在 s*****w 的大作中提到】 : java除了产生一大堆垃圾程序还能干什么? : 我在这个组3年了,java程序的api tests 如果偶尔有一天全pass了,全组一片沸腾, : 然后再继续天天出错。。。
|
a*******9 发帖数: 239 | 36 ErrorCode 是professional行为。现在80%的程序都是business driven,属于用过即扔
或永远改进型,代码就像个垃圾堆,钱是赚到了,但毫无美感。
Type column是string,这种设计很多年前就充斥在各种设计里, 想象一下代码里有多
少等于(=)不等于(!=)的比较,如果你的API有万级、10万级的并发,发不发
String message这种东西就很值得讨论了,
不过现在已没人在意这些了,写几个表,程序能run, 人人都认为自己是最好的
programmer.
repo
【在 s*****w 的大作中提到】 : 我们组的要求是web backend 把error message string 发给web front end。 : 对此我非常反感,我认为只发error code就可以。 : backend code and frontend code共享一个error_message_strings文件,因为2个repo : 共享一个文件用来build,不会有不磨合的地方。 : 大家请批评指教。
|
n***s 发帖数: 551 | 37
说得太到位了。
【在 a*******9 的大作中提到】 : ErrorCode 是professional行为。现在80%的程序都是business driven,属于用过即扔 : 或永远改进型,代码就像个垃圾堆,钱是赚到了,但毫无美感。 : Type column是string,这种设计很多年前就充斥在各种设计里, 想象一下代码里有多 : 少等于(=)不等于(!=)的比较,如果你的API有万级、10万级的并发,发不发 : String message这种东西就很值得讨论了, : 不过现在已没人在意这些了,写几个表,程序能run, 人人都认为自己是最好的 : programmer. : : repo
|
o********s 发帖数: 971 | 38 这里面其实是有政治因素的。
打个比方,如果有一天有个坏人偷偷说 (not in front you, for example, when
talking about your promotion with your director)
you developed a service which cannot be easily shared with other teams, not
extensible, and not upgradeable.
你该如何呢?
亲身经历哈 |
m*****n 发帖数: 3575 | 39 我说了他不听。
老中的毛病是喜欢倚老卖老,对上级各种执拗,活该搞不过印度人。
not
【在 o********s 的大作中提到】 : 这里面其实是有政治因素的。 : 打个比方,如果有一天有个坏人偷偷说 (not in front you, for example, when : talking about your promotion with your director) : you developed a service which cannot be easily shared with other teams, not : extensible, and not upgradeable. : 你该如何呢? : 亲身经历哈
|
t*****n 发帖数: 2578 | 40 只发错误码是可以的。错误码是必须的。
但是有些情况最好连错误消息一起发过去。
比如说你开发出新版本,back end change了,加了新的错误信息。
client端还没有收到新的错误信息文件,这些新的信息就显示不了。特别是当client端
是mobile app,用户很可能还用的旧版没有更新。 |
s*****w 发帖数: 1527 | 41 backend server可以有restful api versioning,
如果前端没改,那么是跟旧的后端talk
【在 t*****n 的大作中提到】 : 只发错误码是可以的。错误码是必须的。 : 但是有些情况最好连错误消息一起发过去。 : 比如说你开发出新版本,back end change了,加了新的错误信息。 : client端还没有收到新的错误信息文件,这些新的信息就显示不了。特别是当client端 : 是mobile app,用户很可能还用的旧版没有更新。
|