V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Lounode
V2EX  ›  程序员

同事大概是 Java 写多了,写的 C#叹为观止

  •  1
     
  •   Lounode · 2023-10-14 23:02:07 +08:00 · 5307 次点击
    这是一个创建于 410 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目内遇到个同事,以前听说是写 Java 的 这是现在他写的 C#,大概是这个样子的 Foo.cs

    namespace xxx.xxx.util.CFoo {
    	public class Foo {
        	
        }
    }
    

    Bar.cs

    using xxx.xxx.util.CFoo
    namespace xxx.xxx.tuil.CBar {
    	public class Bar {
        	Foo foo = new Foo ();
        }
    }
    

    看他在那边写,配合编辑器自动填 using 无缝衔接 Java 了属于是(乐)

    24 条回复    2023-10-16 11:43:53 +08:00
    blackyoung
        1
    blackyoung  
       2023-10-14 23:05:12 +08:00 via Android
    创建一个类就写一个 namespace 么
    Lounode
        2
    Lounode  
    OP
       2023-10-14 23:08:59 +08:00
    @blackyoung 好像是,据他所说转过来时因为 namespace 工作不太一致灵机一动想了这个办法
    看得我一愣一愣的(
    undeflife
        3
    undeflife  
       2023-10-14 23:10:24 +08:00   ❤️ 2
    其实这种跟原来写什么多大没关系,单纯就是菜
    cnbatch
        4
    cnbatch  
       2023-10-14 23:36:06 +08:00
    问问他,为什么不能放在同一个 namespace ,“不一致”在哪些地方
    看看他怎么回答
    netabare
        5
    netabare  
       2023-10-14 23:54:50 +08:00   ❤️ 1
    其实也不是不行,如果他有一些重名的类或者属性的话就正好可以用上了( bushi

    话说 Foo 那一行在 C#里面应该写 Foo foo = new (); 吧。
    lyhiving
        6
    lyhiving  
       2023-10-14 23:55:59 +08:00
    问题不大吧,除非代码跑不了
    cowcomic
        7
    cowcomic  
       2023-10-15 00:55:33 +08:00
    这跟 JAVA 有啥关系?没明白
    thinkershare
        8
    thinkershare  
       2023-10-15 02:03:35 +08:00
    @Lounode 没看出有什么问题,我写了 10 年 C#,2 ,3 年 Java ,感觉没啥问题。
    iamwho
        9
    iamwho  
       2023-10-15 03:10:47 +08:00 via iPhone
    说实话,你要不跟上司反应把他炒了,要不提醒一下他,在网络上吐槽这点真的没意思,有些人的代码写出来就是最佳实现,但我相信你的不是。

    你这个例子甚至不如 $bianliang_mima
    ljrdxs
        10
    ljrdxs  
       2023-10-15 06:20:15 +08:00 via Android
    我只用 C#实战过,没有 Java 工作经历。Java 为什么一个类一个命名空间?
    sadfQED2
        11
    sadfQED2  
       2023-10-15 08:14:15 +08:00 via Android
    我司也有这种人,写个 php,golang ,代码里面一堆 do vo dto ,然后还得整个依赖注入框架。非得在其他语言里面搞出 spring 那一套
    kanezeng
        12
    kanezeng  
       2023-10-15 08:27:07 +08:00
    两个都写,Java 也不会一个类一个包啊?
    blackyoung
        13
    blackyoung  
       2023-10-15 09:28:39 +08:00 via Android
    @ljrdxs java 没有命名空间的说法,只有包名的说法,包名相同不用 import ,否则要 import 。我倒是自学的 csharp 在写 unity ,也是一股 Java 味,想问下 csharp 的命名空间具体应该怎么划分呢,也是按包名划分么
    blackyoung
        14
    blackyoung  
       2023-10-15 09:30:23 +08:00 via Android
    我猜他是不知道怎么命名 namespace ,不如用类名来命名了,我一开始也这样
    ikas
        15
    ikas  
       2023-10-15 17:27:16 +08:00
    这是人的问题
    xuanbg
        16
    xuanbg  
       2023-10-15 17:55:23 +08:00
    因为 Java 没有 namespace ,但是有 package 。事实上这两者基本上是一回事。但是,Java 也没有一个类一个 package 的说法呀?
    sunhelter
        17
    sunhelter  
       2023-10-15 18:03:02 +08:00
    @netabare 这个貌似是 C# 11 的语法糖,.net 6 之后的版本才支持,所以也不算是问题
    sunhelter
        18
    sunhelter  
       2023-10-15 18:04:44 +08:00
    @blackyoung 不用刻意划分,一般就是物理文件夹的路径
    thevita
        19
    thevita  
       2023-10-15 19:41:18 +08:00
    @sadfQED2 依赖注入多好啊,刚改了,极大解放

    不过我不喜欢 一堆 do vo dto 单纯不喜欢这个名字,有必要还是会用类似的分层方式
    ljrdxs
        20
    ljrdxs  
       2023-10-16 09:00:15 +08:00 via Android
    @blackyoung 对我而言不用刻意划分。同一业务方向,自然而言写一个命名空间里。
    看到 Java 开发纠结“怎么划分”,我觉得诧异。这似乎很自然。
    liuidetmks
        21
    liuidetmks  
       2023-10-16 09:13:41 +08:00   ❤️ 2
    码农相轻,都是 crud ,真没必要专门发帖讽刺别人
    Promtheus
        22
    Promtheus  
       2023-10-16 09:24:06 +08:00
    @liuidetmks #21 一般菜鸡逮到机会就要说别人菜,毕竟就会这些东西。
    winrar
        23
    winrar  
       2023-10-16 11:41:02 +08:00
    @Promtheus 一般是这样的,都是搬砖的,非得踩别人一脚。
    cppgohan
        24
    cppgohan  
       2023-10-16 11:43:53 +08:00
    自己这些年写 java/kotlin 多, 写 C# 的 namespace, 也都是全小写了, 和类名大小写做区分, 但不会给类单独弄一个命名空间 ... 感觉 C#标准写法应该似乎都是首字母大写?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5204 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 09:40 · PVG 17:40 · LAX 01:40 · JFK 04:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.