※ 引述《horsekit (New Life)》之铭言:
: ※ 引述《baobomb (baobomb)》之铭言:
: : 中文系前来报到
: : 写文章是写给人看 让人读 要有起承转合 注意冗言赘字 知道什么时后用什么用词
: : 写code是写给编译器看 让VM跑 要有好的架构, 注意效能, 知道什么时候用什么资料
结
: : 跟API
: 写文章是写给人看 让人读 要有起承转合 注意冗言赘字 知道什么时后用什么用词
: 这没有错
: 但是写 Code 也是写给人看的 不是给机器看的 所以也可以有起承转合 注意冗言赘字
: 而编译器的功能是像是 翻译
: 将程式码翻译成 10101010 给机器看
: 机器也只看得懂 10101010
我的意思是 人脑在解读一串文字时 也会有自己的翻译方式
但机器很客观 你怎么写 机器就怎么读
不过人脑不一样 一样的句子不同人解读有可能完全不同 所以我说写文章比较难
: : 我感觉根本就一样啊
: 我认为在写程式的范畴其实很忌讳 `我感觉`
: 像你后面说的 机器很客观
: 就像是你知道这两个不一样 但是你不想承认
: 所以就修饰一下 我感觉一样
: 等到错了之后才说 喔 我没有说一样喔
: 感觉是感性的形容词 难免会错误
: 这样的习惯会在学习的路上给自己埋很多雷
: : 架构=起承转合
: 架构 != 起承转合
为什么我觉得架构等于起承转合呢
用一个非常粗糙的System design讲一个简单的例子
如果你用WebRTC在实作一个像WhatsApp, Line的即时聊天App
起 = 一个Application的create
从VM start Runtime start Dex loaded
再到你程式码的第一个onCreate onStart Create AppComponent Inject Dependencies
然后Connect Socket
并且start processor to observing local database.
就像是你在告诉VM,
我这个应用开始了(文章开始)
同时透过DI 描述说 我这个程式包含了什么 需要compose什么元件(描述文章大意)
DI graph需要简洁明了有秩序 元件不要重复(文章不要拖泥带水, 不要同样的梗一提
再提)
这个过程必须尽可能的缩短Critical Path 来缩短App启动时间(文章第一段通常简洁有力
)
把非必要的Processor丢到Worker thread 去处理 并且在repo里expose data flow给后面
使用(埋梗)
承 = App进到第一个页面
开始从components里取用Repository并subscribe to exposed data stream(Socket mess
ages Read/Write handle by processor/executor and emit final message list to do
wnStream)
根据讯息流去更新UI 描述画面(开始写故事了)
这边故事必须考量到流程线
不然一下讲A一下讲B 两边State不同读者看不懂(concurrency)
转 = 使用者开始做一些操作
Send/Receive message..etc
Repo调用SendMessageExecutor 开始 write message to pending send message table
这时起阶段已经被Start的processor 已经在observing pending table 一旦table chang
ed 就会把message write to socket
同时也read from socket 等待BE ack back
Socket received message后
交给processor处理
更新local messages DB
清理pendingtable
Emit latest messages list 给repo and down stream
(开始描述精彩的故事了 并且讲清楚脉络 让读者身历其境 并且知道整个故事来龙去脉)
和 = 使用者用完你的App
关闭Application
这时候必须要stop/clear不必要的processor service
并且unsubscribe data stream避免memory leak
Keep必要且轻量的state
让使用者在 Hot start, warm start app时能够更快的进入App而不需等待
(文章结尾必须填坑 不能有遗漏的坑挖了没说 然后保留一些想像空间 让读者能够回味
且不会轻易忘记你的文章)
从System design的角度来看 我真的觉得架构跟起承转合一样啊哈哈哈
至于为什么我感觉资结等于用词
今天描述一个东西 我们说
一颗红红的表面光亮有蜡可以吃的水果
读的人一定会想说
怎么不说苹果就好了
资料结构一样
在memory跟速度中我们需要取舍
用什么样的Data structure可以省内存(简短)
但又能够保持效能(读者很快就能理解词义)
写起来真的真的很像啦
写文章还有一个跟写code很像的地方
是可视化性
你写的code 是不是能够让人一看就能够在脑中描绘出大概的样子 跑起来会是什么输出
=
你写的文章 能不能让人看了在脑中想像出画面
本科不要歧视非本科 非本科也不要歧视本科
术业有专攻 只要愿意花时间深入
都能够到达一定的高度
除非是天材
不然我真的觉得学历背景只占10%
努力占90%啦