我应该改变扩展方法(在listtitemcollection)

本文关键字:listtitemcollection 方法 改变 扩展 我应该 | 更新日期: 2023-09-27 18:12:11

(我希望这不会被视为"太像讨论",但我们会看到的。)

我有几个小时来重构长期存在的代码。我注意到我在listtitemcollection上有很多静态方法:

public static ListItem ListItem_InsertIfNotPresent(ListItemCollection lic, ...)
public static ListItemCollection ListItems_Selected(ListItemCollection lic)
public static string[] ListItemValues(ListItemCollection lic)
public static void ListItems_SortByText(ListItemCollection lic)
....

所以它们看起来适合重构。ListItemCollections由许多CLR函数返回,因此我不能派生/子类化。我正在摆弄:

  1. 作为扩展方法实现。代码目前没有任何扩展方法。不为必须将using ListItemCollectionExtensions添加到所有源文件而生气,也不冒未来。net clr可能增加冲突的风险。但是调用语法很好。
  2. 添加一个ListItemCollectionHelper类来放置这些。代码必须在任何licx.SortByText();类型的调用之前去var licx = new ListItemCollectionHelper(dropDownList.Items);,当我只需要调用一个方法时,这有点混乱。
  3. 保持原样,与现在一样使用命名静态!

我看过一些文章,比如。net中使用扩展方法的最佳实践是什么?还有其他人,但他们并不建议这种情况。我特别感兴趣的是你对第一条和第二条的评论。

我实际上不必担心我的代码的"其他用户",但良好的实践从来没有坏处。对于正确或错误,我不想使用LINQ或lambda解决方案。

我应该改变扩展方法(在listtitemcollection)

在您的示例中,除非您在其他地方需要代码,否则我会保持原样,因为它正在工作,而重构只是为了重构可能会导致错误。但是,如果我从头开始,我会创建这些扩展方法。它使代码更容易重用,并有望防止下一次需要相同模式时有人复制此代码。

我更喜欢扩展方法而不是Helper类,因为通过智能感知通常更容易找到方法。根据我的经验,任何以Helper结尾的类在某些时候都会变得一团糟。这变成了不适合任何地方的代码的地方。Helper类一开始不会很糟糕,但在更大的团队中,您很快就会发现其中的方法没有必要存在。

我将把它们设置为扩展方法。

  1. 它不会破坏任何东西(你仍然可以在Helper模式中使用常规方法,所以你现有的代码仍然可以工作)
  2. 当你重构现有代码或编写新代码时,你可以使用更干净的扩展方法语法。
相关文章:
  • 没有找到相关文章