一种省时省力的编程方式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
muchan92
V2EX    程序员

一种省时省力的编程方式

  •  
  •   muchan92 196 天前 5731 次点击
    这是一个创建于 196 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/rainforesters/imsure

    https://github.com/rainforesters/imsure-demo

    请不要争论响应式,这不是重点,重点是这提出了一种新写法。

    以嵌套对象a.b.c的属性监听为例:

    传统写法:

    • 必须遵循链式初始化顺序:先确保实例a完成初始化 → 才能监听b属性 → 当a.b被赋值有效对象后 → 才能继续监听c属性
    • 这是现在进行时。只能在每个属性被实际赋值的那一刻触发监听,无法预判后续操作轨迹。

    新写法:

    • 先声明类型结构A{ B{ C } }→ 在类型 A 上定义b.c的监听规则 → 最后实例化对象a时自然具有所有监听规则
    • 这是将来时。未雨绸缪提前规划好一切,当属性链贯通时(如a.b = { c: xxx }a.b.c = xxx)时自动触发规则,同时智能过滤无效操作(如a.b = {}这类不完整赋值)。
    29 条回复    2025-03-28 16:10:59 +08:00
    fov6363
        1
    fov6363  
       196 天前
    没看懂这个 github 的用途?看代码很难懂
    wyntalgeer
        2
    wyntalgeer  
       196 天前
    没看代码,请教一下如果属性移除,监听也会移除的吧?再加回来不会重复监听吧?
    Chemist
        3
    Chemist  
       196 天前   1
    看不懂,自娱自乐可以,真正工作没人陪你玩这个。
    LeeReamond
        4
    LeeReamond  
       196 天前   11
    编程圈从来不缺这种以为所有人都是傻逼,只有自己聪明逼的家伙。

    点开项目看了看,这么抽象的东西还要收费的我确实从来没见过。
    xFrye
        5
    xFrye  
       196 天前   1
    你们前端真会玩
    JoeDH
        6
    JoeDH  
       196 天前
    div class="reply_content">抽象
    neptuno
        7
    neptuno  
       196 天前
    写的太抽象了,建议先举一个实际业务场景,写一个低级程序员的代码,再把你的高级代码拿出来解释一下。这样大家就能看懂了。
    wxw752
        8
    wxw752  
       196 天前
    同意楼上的观点,没人花一块钱陪你过家家。
    lucasdev
        9
    lucasdev  
       196 天前
    啥意思,“在类型 A 上定义 b.c 的监听规则” 这不违反 “迪米特法则” 么

    看了下 op 的历史回复,这是在将哲学(神学?)应用到编程?
    w568w
        10
    w568w  
       196 天前   1
    计算机哲学民科
    slert
        11
    slert  
       196 天前   2
    可以写出无法维护的代码
    fcbwalk
        12
    fcbwalk  
       196 天前
    闲者模式编程思想
    Opportunity
        13
    Opportunity  
       196 天前
    还需要手动声明依赖这就已经和“省时省力”没关系了吧。。
    molvqingtai
        14
    molvqingtai  
       196 天前
    我缓缓打出一个
    shadowyue
        15
    shadowyue  
       196 天前
    这个项目居然从 2020 年开始迭代了这么久。。。
    svenzhao
        16
    svenzhao  
       196 天前   1
    ????? 粗鲁的看了一下 你发明了一个残次品 mobx 双绑?????? 在家哲学了两天 觉得自己悟道了???
    悟出了 观察者模式和发布订阅模式????

    知不知道 你所谓的悟道 心智负担有多大吗?

    当你项目"悟道"了 100 多条交叉订阅的时候 你的小脑袋连数据流都捋不清楚!

    你所谓的传统写法 是这么些年大家工程实践后 总结的 单向 flow 为的就是确定 无根之水
    mumbler
        17
    mumbler  
       196 天前   3
    中关村软件园旁边的“码农面馆”的格局,是和别处不同的:都是当街一个曲尺形的大柜台,柜里面预备着热水,可以随时下面。写代码的人,傍午傍晚散了工,每每花十来块钱,买一碗面,这是十多年前的事,现在要涨到三十多了,靠柜外站着,热热的吃了休息;倘肯多花几块,便可以买一碟凉拌海带丝或者拍黄瓜,做下饭物了,如果出到几十块,那就能买一样荤菜,什么酱肘子、猪头肉之类,但这些顾客,多是穿格子衫的短工,大抵没有这样阔绰。只有那些穿着印有大厂 Logo 的 T 恤,或者脖子上挂着工牌的,才踱进店面隔壁的房子里,要面要菜,慢慢地坐着吃。

    我从十二岁起,便在村口的“码农面馆”里当伙计,掌柜说,我样子太傻,怕侍候不了那些“高级工程师”,就在外面做点事罢。外面的格子衫主顾,虽然容易说话,但唠唠叨叨缠夹不清的也很不少。他们往往要亲眼看着面从锅里捞出,看过碗里的牛肉是不是太少,又亲看将作料放在碗里,然后放心:在这严重监督之下,羼水也很为难。所以过了几天,掌柜又说我干不了这事。幸亏荐头的情面大,辞退不得,便改为专管温酒……哦不,是专管给顾客连 WiFi 和充电的一种无聊职务了。

    我从此便整天的站在柜台里,专管我的职务。虽然没有什么失职,但总觉得有些单调,有些无聊。掌柜是一副凶脸孔,主顾也没有好声气,教人活泼不得;只有孔乙己到店,才可以笑几声,所以至今还记得。

    孔乙己是站着吃面而穿“冲锋衣”的唯一的人。他身材很高大;青白脸色,皱纹间时常夹些伤痕;一部乱蓬蓬的花白的头发。穿的虽然是冲锋衣,可是又脏又破,似乎十多年没有补,也没有洗。他对人说话,总是满口“底层逻辑”、“代码规范”,叫人半懂不懂的。因为他姓孔,别人便从描红纸上的“上大人孔乙己”这半懂不懂的话里,替他取下一个绰号,叫作孔乙己。孔乙己一到店,所有吃面的人便都看着他笑,有的叫道,“孔乙己,你脸上又添上新 Bug 了!”他不回答,对柜里说,“温一碗面,要一份拍黄瓜。”便排出九块大洋……哦不,是掏出手机扫了九块钱的码。他们又故意的高声嚷道,“你一定又偷人家公司的代码了!”孔乙己睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你在 GitHub 上 Fork 了人家的库,改了俩变量名就说是自己写的,被原作者挂起来锤。”孔乙己便涨红了脸,额上的青筋条条绽出,争辩道,“借鉴不能算偷……借鉴!……程序员的事,能算偷么?”接连便是难懂的话,什么“开源精神”,什么“站在巨人的肩膀上”之类,引得众人都哄笑起来:店内外充满了快活的空气。

    听人家背地里谈论,孔乙己原来也写过代码,但终于没有当上架构师,又不会“向上管理”;于是愈过愈穷,弄到将要讨饭了。幸而写得一手好代码(虽然是过时的技术栈),便替人家做些外包,写点小脚本,换一碗饭吃。可惜他又有一样坏脾气,便是好喝……哦不,是好高骛远,总想搞“颠覆式创新”。坐不到几天,便连人带电脑,一齐失踪。如是几次,叫他做外包的人也没有了。孔乙己没有法,便免不了偶然做些“借鉴”的事。但他在我们店里,品行却比别人都好,就是从不拖欠;虽然间或没有现钱,暂时记在账上,但不出一月,定然还清,从粉板上拭去了孔乙己的名字。

    孔乙己喝过半碗面,涨红的脸色渐渐复了原,旁人便又问道,“孔乙己,你当真会写代码么?”孔乙己看着问他的人,显出不屑置辩的神气。他们便接着说道,“你怎的连个 P7 也没混上呢?”孔乙己立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是“性能优化”、“内存管理”、“并发编程”之类,一些不懂了。在这时候,众人也都哄笑起来:店内外充满了快活的空气。

    在这些时候,我可以附和着笑,掌柜是决不责备的。而且掌柜见了孔乙己,也每每这样问他,引人发笑。孔乙己自己知道不能和他们谈天,便只好向孩子说话。有一回对我说道,“你写过代码么?”我略略点一点头。他说,“写过代码,……我便考你一考。那个‘i++’和‘++i’,怎样区分的?”我想,讨饭一样的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,“不能区分罢?……我教给你,记着!这些知识应该记着。将来做项目经理的时候,优化代码要用。”我暗想我和项目经理的等级还很远呢,而且我们掌柜也从不让代码跑得更快;又好笑,又不耐烦,懒懒的答他道,“谁要你教,不就是先赋值再自增和先自增再赋值的区别么?”孔乙己显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说,“对呀对呀!……‘i++’和‘++i’还有四样写法,你知道么?”我愈不耐烦了,努着嘴走远。孔乙己刚用指甲蘸了面汤,想在柜上写代码,见我毫不热心,便又叹一口气,显出极惋惜的样子。

    有几回,邻居孩子听得笑声,也赶热闹,围住了孔乙己。他便给他们一人发一个 Bug 。孩子们领完 Bug ,仍然不散,眼睛都望着他的电脑包。孔乙己着了慌,伸开五指将电脑包罩住,弯腰下去说道,“不多了,我已经不多了。”直起身又看一看 Bug ,自己摇头说,“不多不多!多乎哉?不多也。”

    孔乙己是这样的使人快活,可是没有他,别人也便这么过。

    有一天,大约是中秋前的两三天,掌柜正在慢慢的结账,取下粉板,忽然说,“孔乙己长久没有来了。还欠十九块钱呢!”我才也觉得他的确长久没有来了。一个吃面的人说道,“他怎么会来?……他被打断腿了。”掌柜说,“哦!”“他总仍旧是偷。这一回,是自己发昏,竟偷到大厂的核心代码库里去了。人家的代码库,偷得的么?”“后来怎么样?”“怎么样?先写检查,后来是谈话,再后来是开了,听说还吃了官司。”“后来呢?”“后来打官司输了,赔了一大笔钱。”“赔了钱怎样呢?”“怎样?……谁晓得?许是‘优化’掉了。”掌柜也不再问,仍然慢慢的算他的账。

    中秋过后,秋风是一天凉比一天,看看将近初冬;我整天的靠着暖气,也须穿上棉袄了。一天的下半天,没有一个顾客,我正合了眼坐着。忽然间听得一个声音,“温一碗面。”这声音虽然极低,却很耳熟。看时又全没有人。站起来向外一望,那孔乙己便在柜台下对了门槛坐着。他脸上黑而且瘦,已经不成样子;穿一件破夹袄,盘着两腿,下面垫一个蒲包,用草绳在肩上挂住;见了我,又说道,“温一碗面。”掌柜也伸出头去,一面说,“孔乙己么?你还欠十九块钱呢!”孔乙己很颓唐的仰面答道,“这……下回还清罢。这一回是现钱,面要好。”掌柜仍然同平常一样,笑着对他说,“孔乙己,你又偷了代码罢!”但他这回却不十分分辩,单说了一句“不要取笑!”“取笑?要是不偷,怎么会被裁掉,连电脑都被没收了?”孔乙己低声说道,“是……是项目黄了,意外,意外……”他的眼色,很像恳求掌柜,不要再提。此时已经聚集了几个人,便和掌柜都笑了。我温了面,端出去,放在门槛上。他从破衣袋里摸出四块钱,放在我手里,见他满手是泥,原来他便用这手走来的。不一会,他吃完面,便又在旁人的说笑声中,坐着用这手慢慢走去了。

    自此以后,又长久没有看见孔乙己。到了年关,掌柜取下粉板说,“孔乙己还欠十九块钱呢!”到第二年的端午,又说“孔乙己还欠十九块钱呢!”到中秋可是没有说,再到年关也没有看见他。

    我到现在终于没有见大约孔乙己的确是“优化”掉了。
    moefishtang
        18
    moefishtang  
       196 天前   1
    《受孔子的影响》
    dddd1919
        19
    dddd1919  
       196 天前
    @kyuuseiryuu #3 看完了吧,看不懂吧,付费订阅吧
    rb6221
        20
    rb6221  
       196 天前
    看懂了,一个问题:需求频繁变化的时候咋办
    kneo
        21
    kneo  
       196 天前   2
    想钱想疯了吧。
    qping
        22
    qping  
       196 天前
    这不就是响应式么,和 vue watch/reactive 有什么区别
    hefish
        23
    hefish  
       196 天前
    op 的思想非常先进,而且只收 1 元,实在是太便宜了,应该多收一点,这么优秀的思想,实在是让我醍醐灌顶。。。 我顿悟了。。。
    我忽然明白了自己是谁。。。
    我忽然明白了自己来自哪里。。。
    我忽然明白了自己要去往哪里。。。
    这多亏 op 的思想。。。

    你滴盐,我滴醋。。。
    潮汕民粗粗义人民共火锅,满塞!
    Chuckle
        24
    Chuckle  
       196 天前
    这么多规则符号,让我想起了 mongodb 的一堆管道符,不是美好的体验,记不住的。想更好处理副作用,但这样搞,别说花钱学了,用 setTimeout 去避免死循环。。。。。。其实有个东西叫 rxjs ,很好用。
    iorilu
        25
    iorilu  
       196 天前
    别随便发明所谓新方法

    如果你真有信心, 建议用你这个方法改写一个知名得库, 如果你改的好, 比如性能大增, 或者代码减少 70%, 那可以再
    来吹
    luotianyi0712
        26
    luotianyi0712  
       196 天前
    好抽象,别整这些花里胡哨的的,以实用性为主
    xuld
        27
    xuld  
       195 天前
    既然你的方法省时又省力,为啥你自己开源的两个仓库的代码还是一坨 vue 的代码
    lizy0329
        28
    lizy0329  
       195 天前
    成功学学多了吧?
    lnbiuc
        29
    lnbiuc  
       195 天前
    有一种被卖脑白金的感觉
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     875 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 19:50 PVG 03:50 LAX 12:50 JFK 15:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86