前端真的可以这么水吗?

5 天前
 Karte

如题,OP 在一家小公司。公司里面有几位前端,现在有前端对接蓝牙设备的需求。且通讯格式已经固定。

在最近他们开发时在百度或者 chatgpt 搜索如何编解码 16 进制,而且和其他前端讨论这个问题。

然后我就看到了令人震惊的代码,他们把收到的数组数据转成字符串,然后再通过截取字符,通过字符串匹配解码,或者在把这字符通过 parse 转为 实际的十进制

最离谱的是,当你问起为什么不用位运算,与或非,数组之类的。他们很有气势的说:前端不学进制转换。

离谱吧,当看到他们的命名更高血压,都是拼音首字母。不过!还好加了备注。

9967 次点击
所在节点    程序员
133 条回复
binge921
5 天前
水的还是蛮多的 至少我的环境是这样 我现在就是 混就混吧 也过了掰头技术的年纪 只要别影响我就行了
rivercherdeeeeee
5 天前
@Karte 世界本来就是个草台班子
Karte
5 天前
@Marlon 协议是私有的,这个不好放出来. 大体结构就是如下:

接收的是 UintArrayBuffer

```javascript
function decode(buffer) {

var result = {
"success": true,
"message": "成功",
}

if (buffer.length < 15) {
result['success'] = false;
result['message'] = "数据长度不符合最低要求."
return result;
}

// 切除无效数据, 直到获取到指定字符.
while ((buffer[0] !== 0x00 || buffer[8] !== 0x00)) {
buffer = buffer.slice(0, 1);
}

if (buffer.length < 15) {
result['success'] = false;
result['message'] = "无有效数据."
return result;
}

var offset = 0;

// 长度
var dataLength = ((buffer[offset] << 8) | buffer[offset + 1]) & 0xFFFF;
offset += 2;

// CRC
var data = buffer.slice(offset, offset + dataLength);
offset += dataLength;

// 校验 CRC
var crc = (((buffer[offset] << 8) & 0xFF00) | (buffer[offset + 1] & 0xFF)) & 0xFFFF;
var calcCrc = _calculateCRC16(buffer.slice(0, offset));

//
if (crc !== calcCrc) {
result['success'] = false;
result['message'] = 'crc failed. receive: ' + crc + ", calculate: " + calcCrc
return result;
}

return {
"succes": true,
"message": "成功",
"hex": byte2Hex(buffer),
"decode": {

}
};
}
```
weixind
5 天前
🤔 和你对接的大概率水平和工资都和你差不多。
Cooooooode
5 天前
昨天还听朋友吐槽同事命名用 a,b,c 的
Genshin2020
5 天前
位运算是我高中时候打算写一个贪吃蛇小游戏时候学的,

至于与或非,是了解电路的时候先知道这个概念的,然后写代码也有与或非就多去接触一下,发现和电路是一样的,到现在知道了计算机的与或非,电路是计算机的爸爸。

我是后端转的前端,转前端以后,几年内没和蓝牙对接过,等小程序出来以后,才开始用 JS 处理蓝牙信息。

我同事毕业后就是前端,她对这些确实欠缺一些,很多概念就是课本上的,实际使用就懵了。

我就写了一份很详细的文档,然后开个分享会,讲解前端是如何进行数据处理的,包括不仅限于后端擅自做主把 2 个字段合并成一个,让前端没有办法正常数据回显,蓝牙和各种协议的数据如何对接,和海康这种文档拉垮的玩意怎么进行联调。

可能是这样的事情做多了,有一天就成技术经理了。

然后一次裁员就把自己填上了,可算远离这帮大傻逼了。

哦耶。
Genshin2020
5 天前
@Genshin2020 电路学习也是高中
equationl
5 天前
楼上各位说的很对,不要因为一个技术点就否定一个人或一个岗位,毕竟每个人擅长的地方都不一样。

但是,前提是要能沟通啊,知道自己不会,你问人,你百度,你找 AI 都行,你至少得有点基本的分辨能力吧。

自己不会还要死鸭子嘴硬才是真的有问题。

譬如我司,有一个 Flutter 开发,昨天早上刚来上班,前端(有一部分功能是 H5 ,由 Flutter 提供 WebView 运行)开发就告诉他,某个模块需要调用原生拍照之后把照片传给 H5 ,但是现在 Flutter 传的是本地文件路径,H5 无法使用。

这个 Flutter 开发就炸锅了,咬死说 H5 可以使用,是前端自己不会写,并且举例说以前都是这样用的,以前都能用,你怎么不能用了。

前端让他传 blob ,他:传不了,我就只有这个字符串(文件路径),你爱要不要!

前端改口,行行行,那你上传到公司的 OSS ,把图片地址给我总行了吧,他:我这里上传之后拿到的是 OSS:// 的链接,怎么给你 HTTP 链接嘛,给不了!(上传文件用的第三方库,返回的地址是一个自定义的 OSS 地址,只要调 API 逆向一下就是 HTTP ,但是显然,他连文档都没看过,就一口咬定转不了 HTTP )

从早上一直吵到下午四五点,还在吵。

前端无语了,都不和他啰嗦了,他可能觉得前端不理他就是理亏吧,于是像个胜利的大公鸡似的雄赳赳的去找前端负责人打小报告。

前端负责人过来了解了情况,明确告诉 Flutter 开发,H5 确实不能直接读取本地文件,你需要传二进制数据或者把文件编码成 base64 传字符串过来才行。

然后这个负责人指着我说,他以前和我们对接过类似的场景,你可以问他当时是怎么处理的(我是原生安卓开发)。

但是我可不想惹一身骚,所以我快速的给他说了一下 webview 是一个沙盒系统,是没有权限访问本地文件的,我当时那个场景文件不大,所以我是直接编码成 base64 之后传 base64 字符串给 H5 的。

果然,他打死不信,作势要和我大吵一架。

说着还打开以前的代码说,以前就是传的文件路径,怎么没问题?

我一看,笑死我,他所谓的以前都可以的代码只是拦截了 H5 的文件选择请求,然后由原生端处理文件选择,但是本质上还是由 H5 端发起的文件选择啊,和现在原生主动发文件给 H5 能是一回事?

我给他解释了,他还是不信,还一直在这里吵吵嚷嚷的。

我受不了,就给他说,你自己试一下不就知道了,然后就尿遁了。

等我遁完回来,他还在这里吵吵嚷嚷。

咱就是说,你不懂别人给你解释了你不信就算了,你自己不会求证吗?是百度要收钱还是谷歌要收钱啊?
Karte
5 天前
@magewu1223ll 的确我不会动画. 但是进制就和阿拉伯数字一样, 在计算机行业中可以说是 "9 年义务教育" 的内容. 而动画则是之后的所要学习的不同行业知识.
ztty
5 天前
@sillydaddy 除了符号位,有且只有一个 bit 是 1 就行
v2ye
5 天前
你这样我就要找那张又不是不能用的图了。
jspatrick
5 天前
在我的理解来看,大部分时候无论前后端,都是调包侠...
whyrookie
5 天前
这个问题其实很多后端如果不用的话估计也不大明白,如果是非科班的,可能有个印象。
yinxs2003
5 天前
有一说一,不用位运算我不觉得有啥,术业有专攻而已。PS:能解决问题的方案就是好方案
whyrookie
5 天前
@whyrookie 如果是科班的
Karte
5 天前
@twofox 只有偏底层的才需要这种运算, 其他时候基本上不需要. 不过在算法中进行数值替换一般会用到 ^

```go
old := 10
new := 11

old = old ^ new
new = old ^ new
old = old ^ new

fmt.Println("after OR values: ", old, new)
```
azhong123
5 天前
无聊。。。工作而已。。。。。
Karte
5 天前
@yinxs2003 的确, 解决是第一优先级. 但是在解决完成后, 需要考虑到是否可扩展, 是否清晰等因素二期重构. 否则就是💩
pandaPapa
5 天前
用的 uni-app? 它自带那个编译器, 打印 Uint8Array 什么都看不到 , 必须得先转字符串才能看到 是不是因为这个?
ltaoo1o
5 天前
@Karte

1 、我大学毕业 8 年了,有人问我一个高中化学题,我做不出来,他评价我「太水了,还大学生呢,这不是高中基础知识吗」
2 、放下助人情结 尊重他人命运

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

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

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

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

© 2021 V2EX