【问题标题】:Reducing .Net code using Inline Object creation使用内联对象创建减少 .Net 代码
【发布时间】:2012-04-04 15:53:32
【问题描述】:

我已经设法将几行代码压缩到此

For Each gal In galleries
   With New HtmlGenericControl("div")
                .ID = gal.Header
                .Controls.Add(New HtmlImage() With {.Src = "http://p.com/pic.jpg"})

                galleryContent.Controls.Add(**Me**)
   End With
Next

我找不到任何地方如何引用我当前正在使用工作的对象以将控件添加回“galleryContent” - 使用普通的me 会使整个网络服务器崩溃...哎呀。

使用不提供仅使用. 的短手 - 但它使用唯一的方法来做到这一点?我很期待某种.Me 或类似this 的东西

有什么想法吗?

【问题讨论】:

  • Can't。即使在类似的 C# 构造中,您也不能。
  • 不试图回答你的问题,但如果你解决了这个问题,一个好的单元测试就是把它交给另一个开发人员并让他弄清楚它想要做什么。可读性为王,可调试性为王。
  • 这就是 .NET-VB 的美妙之处。它只有尽可能短才具有可读性。在 C# 中,像这样的压缩将是可怕的,但 C# 还有其他好处。
  • @ppumkin,我强烈建议您考虑一下,与使用最少字符数相比,可读、可调试的代码可能是更好的质量指标。

标签: .net vb.net visual-studio-2010


【解决方案1】:

你不能。至少不是那样。

试试这个:

For Each gal In galleries 
   Dim obj as New HtmlGenericControl("div") 
   With obj
        .ID = gal.Header 
        .Controls.Add(New HtmlImage() With {.Src = "http://p.com/pic.jpg"}) 

        galleryContent.Controls.Add(ojb) 
   End With 
Next 

【讨论】:

  • 唉,这是我一个小时前写的方法 :-) 但我想我可以试着把它压扁,看看我能走多远。但是嵌入匿名函数在 VB 中被证明是不自然的。最好使用 Linq 最有可能?有例子吗? :-)
【解决方案2】:

Mystere Man 是对的,但考虑一下……这会影响代码的可读性。

“阅读代码的频率远高于编写代码的频率,因此请做好相应的计划”

我建议避免在 VB 中使用“With”...除非您真的“必须”。

希望对你有帮助。

【讨论】:

    【解决方案3】:

    你可以这样做:

    For Each gal in galleries
        galleryContent.Controls.Add(New HtmlGenericControl("div") With { .ID = gal.Header })
        galleryContent.Controls[galleryContent.Controls.Count - 1].Controls.Add(New HtmlImage() With {.Src = "http://p.com/pic.jpg"})
    Next
    

    但这纯粹是为了减少行数。它严重降低了可读性,因此在任何正常情况下,您都不应该仅仅以减少代码行数为目标。可读性远比“行效率”重要。

    【讨论】:

    • 有道理..我需要将匿名函数的添加包装到顶层..难怪:)非常好..现在测试!
    • 它不起作用.. 因为 .Controls.Add 不作为 HtmlGeneric 控件的属性存在,而是一个函数.. 太糟糕了.. 是的.. 它开始看起来很奇怪.
    • 好吧,这很有道理。当我写出sn-p时,我并没有真正思考。出于好奇,您的“galleryContent.Controls”是否有“AddRange”方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2021-01-22
    • 2010-09-30
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多