Soft_Job 板


LINE

※ 引述《wandallin (万大林)》之铭言: : 大家晚安,因为本身没什麽朋友在新创上班,自己也是第一次在新创 : 所以想在这边询问大家开发上的一些小疑问 : 开发环境是react.js + create react app + firebase : 目前公司是MVP刚上线的状况还在补足一些功能 : 好让老板出去推销,尚未盈利也还没确认商业模式 : 不过在开发过程中其他工程师会提一些作法,说是为了未来着想 : 例如: : 1. PR要merge的时候做Squash,因为这样git tree比较好看 我自己是没意见,因为懒,但我会照做,这没什麽好争论的,管专案时程与掌控 细节的人有需要的话,这种程度的overhead 可以吞 : 2. function超过一百行,就想要拆出来 我是写Java的,即使是古早时代写Eclipse Plugin那种超复杂的Desktop GUI Program 我都可以压在50行内,到目前为止,只要是『程式码要持续维护超过半年』的情况, 我看不出有任何藉口一个Method可以超过100行 : 3. 完全遵照eslint的规范,任何warning都不能出现 : 4. 时常想回去重构程式 我的重构发生在: 1. 那个地方已经变成Error Prone,照三餐来烦你,不修整就是天天给他出代志 2. 加新功能,重构本来就是『新功能实作』的一部分,把原本的结构锯掉一块然後硬插 东西上去就说新功能做好了,这算哪门子做好?这样搞的人到底是在抢功劳、讨好老板, 还是好好做事?明天要Demo那我没话讲,但这不会去说它做好了。 3. 可以预见未来会有很多地方都依赖这个部分,那就是照三餐做重构,特别是API的切 分与命名,doc要补齐,当然我说的『很多』,指的就是至少三个跨instance的Module 4.重构绝大多数不是改架构,通常只是把责任切分清楚,让该在一起的在一起,一段 程式码不要同时得考虑太多不同层次的业务与工程需求,当然这有能耐的问题,对我来说 开个interface透过polymorphism把service内不该看到的东西遮掉,把合约订清楚是了 不起一个下午的事,但有些人就是会用上两天,那就是自己能力范围内做好 : 5. 想把所有非同步的function都改成promise 我不晓得你的语言环境这块是不是已经很成熟,Java的话是没啥好谈的,我知道的就至少 有三四个成熟的方案能选,用哪一个都可以,自己的玩具程式还是测试才会用Thread硬干 选择的重点在於程式码是用在什麽场景?简单的问,就是你是开发自己的App?还是开发 给人用的lib、甚至是framework? 这个程式码会跑在哪几种container里? Servlet? Android? Spark? Spring? 凡是有Component lifecycle的都要想一下他所处的 环境的水电基础能不能支援这种介面 然後测试是重要的,如果你决定让自己的interface去依赖别人开发的lib,这种async的 东西测试用的utilities、await()该做的都要做 : 6. 想导入TDD以及jest,让系统减少错误发生机率(目前没人会这东西) 大部分pure code我是不写测试的,我认为静态强型别的语言使用要义,就是透过型态 约制与meta programming,利用compiler 与IDE来帮开发者预先纠错,会搞TDD只有在: 1. 核心逻辑复杂度极高,比如说开发DSL Interpreter、rule engine等需要用上finite state machine的场合 2. 重构写太脏需要大清扫的程式码的时候 有side effect的程式码我写测试粗分三类: (随便写,不然认真写下去不晓得多少字,叫qrtt1来补好了) UI、Persistence、Downstream portocol UI我个人经验(偏见)是:他基本没救,搞那种起虚拟环境去按键精灵的成本非常的高, startup还是认命自己点吧,要稍微有救一点的从E2E test开始,前提是model view presenter的view abstraction不能偷工太多,不然protocol不清楚的东西测试也是乱写 Persistence的测试除了效能测试以外的都是在确定异质系统(DB, HDFS, 其他)是不是 如同你想像的,把DB或File System Mock掉的测试是没什麽意思的,除非在测异常处理 逻辑 Downstream portocol一般就是有切Micro Service,上下游都是同一家人写的,也 就是两造间该怎麽讲话还有乔的空间,通常这些测试就是真正的规格,可以拿来画押、 拿来当教学、拿来保证重构完不会死人 即使是startup,测试异常与正常的比例经验上也至少得2:1到5:1,完全只考虑happy path那是明天要给大客户做demo才这样搞 最能写code不会错的人,都是预先知道要测该测哪里的人,那人要怎麽知道该测哪? 就是平常写够多测试写出心得啊,不然难不成靠掷杯吗? 这就是我说的:『平日经常练习举100KG,今天突然要赌110KG才有机会』的意思 : 7. 注解尽量删除,只留jsdoc,减少封装程式码 每个function body都小於30行,就会发现注解就是method signature,重构等价 於写注解 : 上面除了第六项其他都开始做了 : 不知道大家的公司的情况是怎麽样 : 我没有想过这些东西的压力会远大过我思考服务架构的问题 : 这些东西让我觉得满烦的,没有制度化都是看个人喜好 : 可能哪天他看到一个别的觉得不错又要用了 不试肯定不行,连SI都会试了startup还不试那是要拿啥赢别人? 一直乱试当然也不可以,这是在做生意,不是在玩 拿捏这之间的分寸就是tech lead的价值,看老板的眼光一部分就是在看这个 : 还是说新创本来就是这样,可能我比较适合回去一般公司 : 这辈子第一次觉得写程式这麽烦== 凡事总有第一次的,习惯就好 -- 『你知道人有脑子,所以不要只是单纯的满足它,偶尔也要使用它啊。』 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 216.52.21.4
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1524596880.A.1BF.html ※ 编辑: zanyking (216.52.21.4), 04/25/2018 05:10:10 ※ 编辑: zanyking (216.52.21.4), 04/25/2018 05:14:09 ※ 编辑: zanyking (216.52.21.4), 04/25/2018 05:18:02
1F:推 wandallin: 感谢分享! 04/25 07:43
2F:推 joe7226107: 赞赞 04/25 08:10
3F:推 Clain66: 测试那段指的只适合需要编译的语言。而且在没有测试的情 04/25 08:18
4F:→ Clain66: 况下做重构,个人觉得要嘛是你很熟悉 code 或很强,不然 04/25 08:18
5F:→ Clain66: 这做法就是传说中的上线测而已 04/25 08:18
6F:推 es8603: 推推 04/25 10:15
7F:→ deray: 良币 04/25 12:30
8F:→ zanyking: Clain66:啊我不就说重构要写测试?有side effect的 04/25 13:45
9F:→ zanyking: 当然也要写啊~不然不论是DB还是别人写的service都要被 04/25 13:46
10F:→ zanyking: 脑补不到的部分给修理的 04/25 13:47
11F:→ qrtt1: 被 cue 惹,可是手痛中,好懒得打字啊 04/25 18:21
12F:推 art1: 职业病的手痛? 04/25 21:58
13F:→ landlord: qrtt1, 膝盖中了一箭,但手在痛?XD 04/25 22:58
14F:→ qrtt1: 前几天教练说最近没什麽进步,要带我脱离一下舒适圈。然後 04/26 01:02
15F:→ qrtt1: 我的二头肌就酸痛到现在了。自从训练後,酸痛取代了病痛。 04/26 01:02
16F:→ cha122977: 为什麽有qrtt1还有个qrt1啊?中了一箭就少了一个字母? 04/26 02:07
17F:→ cha122977: …靠北是art1 我眼残… 04/26 02:07
18F:推 chan15: 一个三四千行的 class 而且刚接触而已重构也是一个下午就 04/27 16:17
19F:→ chan15: 好吗 XD 04/27 16:17







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job 或 站内搜寻

TOP