CRUD 入门: 是所有语言都这样还是 xcode 的 Vapor 不行? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
andyJado
V2EX    Xcode

CRUD 入门: 是所有语言都这样还是 xcode 的 Vapor 不行?

  •  
  •   andyJado 2022-07-07 16:31:34 +08:00 4418 次点击
    这是一个创建于 1258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    后定义的 Read 请求直接覆盖了前面的, xcode 屁声不放

     app.get("hello","vapor") { req in retrn "helo, vapor" } // TODO: covered last same path app.on(.GET, "hello","vapor") { req in return "wow" } 
    19 条回复    2022-07-08 15:58:45 +08:00
    wdhwg001
        1
    wdhwg001  
       2022-07-07 16:56:19 +08:00
    这…你要是希望 IDE 能在非编译期报个警,估计得是 TypeScript 这种有图灵完备的类型系统的才行吧。

    编译期报个警就行了的话,估计各种支持宏的编程语言都能做得到。
    mxT52CRuqR6o5
        2
    mxT52CRuqR6o5  
       2022-07-07 18:12:29 +08:00 via Android
    @wdhwg001 这种编译期也报不了警吧,只能运行时报警
    @andyJado xcode 又不可能去理解框架的细节来告诉你这样写会有问题
    mxT52CRuqR6o5
        3
    mxT52CRuqR6o5  
       2022-07-07 18:15:48 +08:00 via Android
    或者说你这个属于逻辑错误,需要程序员自己去解决的
    GeruzoniAnsasu
        4
    GeruzoniAnsasu  
       2022-07-07 18:34:59 +08:00
    你好,编译器顶多能理解语法,它们绝大多数情况下不理解 on 和 get 是什么语义。

    a.b
    a.b

    后面的 b 覆盖了前面的 b ,这是一个纯语法问题

    a.b
    a.c

    c 和 b 是不同的语义,我怎么知道 c 会覆盖 b ?不太可能吧
    andyJado
        5
    andyJado  
    OP
       2022-07-07 19:44:30 +08:00
    @GeruzoniAnsasu @mxT52CRuqR6o5 @wdhwg001

    ♀抱歉, 统一回复下, 孩子不是在抬杠, 被 xcode 写 app 时体验喂太饱了,比如,

    一个视图上的变量更新没用更新在 MainActor 都要被骂, 像这种存在歧义但不放声的情况真的第一次遇到.
    mxT52CRuqR6o5
        6
    mxT52CRuqR6o5  
       2022-07-07 20:03:38 +08:00 via Android
    @andyJado 我没做过 ios 开发,不是很清楚"一个视图上的变量更新没用更新在 MainActor"具体是指什么。
    我假设是指你在开发 ios 应用时,xcode 不仅能报告语言错误,还能检测出 ios 前端框架的错误使用方式,那其实也很正常,换成其他 ide 的话就属于是框架开发了个 ide 插件可以检测出框架错误的使用方式,xcode 和 ios 开发框架都是苹果自家的,能做这种事不奇怪
    andyJado
        7
    andyJado  
    OP
       2022-07-07 20:18:59 +08:00
    @mxT52CRuqR6o5

    就异步交给其他 cpu 处理的一些数据返回来, 更新到视图上的这一步, 如果没有在代码中显式标注“你回到主 queue 了”的话, 可以运行但会紫色警告.
    MakHoCheung
        8
    MakHoCheung  
       2022-07-07 20:35:49 +08:00
    这种需要苹果给 Xcode 加上支持或者 Vapor 官方开发个 Xcode 的插件
    afutureus
        9
    afutureus  
       2022-07-07 20:40:28 +08:00 via iPhone
    可以看一下 Vapor 源码的 RoutesBuilder 部分。你可以提一个 PR ,让 RoutesBuilder 支持 重复添加的检测。
    sutra
        10
    sutra  
       2022-07-07 21:06:52 +08:00
    Vapor 不行。
    sutra
        11
    sutra  
       2022-07-07 21:44:04 +08:00
    正经点的框架至少搞个警告:
    21:42:34.231 WARN [http-nio-8080-exec-3] org.apache.cxf.jaxrs.model.OperationResourceInfoComparator.compare(OperationResourceInfoComparator.java:126) Both org.oxerr.freeradius.resource.DebugResource#getPI and org.oxerr.freeradius.resource.DebugResource#hello are equal candidates for handling the current request which can lead to unpredictable results
    21:42:34.232 WARN [http-nio-8080-exec-3] org.apache.cxf.jaxrs.model.OperationResourceInfoComparator.compare(OperationResourceInfoComparator.java:126) Both org.oxerr.freeradius.resource.DebugResource#getPI and org.oxerr.freeradius.resource.DebugResource#hello are equal candidates for handling the current request which can lead to unpredictable results
    NXzCH8fP20468ML5
        12
    NXzCH8fP20468ML5  
       2022-07-07 23:02:30 +08:00
    C#的 aspnet coree 也不行,运行时抛错
    iOCZ
        13
    iOCZ  
       2022-07-07 23:14:24 +08:00
    xcode 还是个孩子
    abctt
        14
    abctt  
       2022-07-08 01:38:59 +08:00 via iPhone
    intellij idea 可以
    foxwe10
        15
    foxwe10  
       2022-07-08 01:53:06 +08:00 via iPhone
    这种情况和 Xcode 有什么关系呢,你写好的代码没有编译错误,执行结果不如你的预期,这不就是代码写的 bug 吗。
    Swift 的 async/await 模型本身没问题,视图变量都应该是要求在主线程操作的,给你报 runtime warning 也没毛病吧。
    andyJado
        16
    andyJado  
    OP
       2022-07-08 09:12:10 +08:00
    @foxwe10 我的意思是 xcode 棒...我这个例子就是为了说明它它它很细心, 我就不用把这些东西放脑袋里了.
    andyJado
        17
    andyJado  
    OP
       2022-07-08 09:13:40 +08:00
    @sutra 太对了哥, 谢谢哥!
    nothingistrue
        18
    nothingistrue  
       2022-07-08 09:58:15 +08:00
    首先通过搜索发现,xcode 是 IDE ,Vapor 是 Swift 语言的一个玩意。所以楼主的问题应该是:是所有开发( IDE 、语言、框架)都这样还是 Xcode 下 的 Vapor 框架不行?

    如果产生的错误,是运行时报了错误,app 这个对象不允许重新定义 GET 请求,那么:所有编程语言都是这样,所有 IDE 肯定不会报编译或者语法错误,专项程度高的 IDE 会报警告级别的错误。

    原因:
    1 ,不允许重新定义 GET 请求这个规则,是由 app 这个类,或者 Vapor 框架的规则,不是 Swift 语言的语法规则,所以它铁定不是语法错误,最多只能是警告
    2 ,(通常来说,具体还要看语言的语法规则)这个规则是运行时规则,或者代码跑起来才能出错的规则,所以基本检测工具没有检测它的要求,高级或者专项检测工具才会检测它。
    LLaMA2
        19
    LLaMA2  
       2022-07-08 15:58:45 +08:00
    我能理解 OP 的痛苦,我写 nestjs 时也遇到过,后来得人工注意。
    但这个问题不是语言层面上的错误,甚至说这中写法是允许的。
    但在业务中,大多数时候这种情况应该是写错了。
    所以我倾向于框架限制或 IDE 告警,提醒用户这里有不合理的地方。至于最终定夺则由人或人事先确定好的 rules 决定报错或者无视
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1042 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 23:06 PVG 07:06 LAX 15:06 JFK 18:06
    Do have faith in what you're doing.
    ubao msn 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