代码之家  ›  专栏  ›  技术社区  ›  Genady Sergeev

对于应该设置传递对象的属性的方法,是否有命名约定

  •  2
  • Genady Sergeev  · 技术社区  · 16 年前

    我正在编写一个方法,该方法将设置作为参数传递的对象的属性。方法接受类型为interface的一个参数,并且方法的返回类型为同一接口。我想知道这种方法是否有某种命名约定。我在想这样的事情:

    菲林接口类型数据 InitInterfaceTypedata接口 但对我来说这两个听起来都很笨拙。你觉得怎么样?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Andrew Hare    16 年前

    这里没有硬性规定。这两个名字听起来都不错,但我通常会用 PopulateInterfaceTypeData .

        2
  •  1
  •   simich    16 年前

    fillininterfacetypedata听起来不错。如果你能简单地说明一下,我想所有的数据都是合适的。这毕竟取决于上下文。

        3
  •  1
  •   Mongus Pong    16 年前

    我认为这取决于你用什么填充对象,为什么?

    您正在设置默认值吗?在这种情况下,像initialisetypedata或defaulttypedata这样的东西可能会有意义。

    你也许正在清除他们的价值观?也许物体的状态被移到另一个。在这种情况下,像deactivateBankAccount或makeuserwired之类的东西,或者对对象执行的任何操作。


    小心代码气味 通常(当然,并不总是)如果命名方法有困难,您会发现,这表明设计不太正确,可能会导致更进一步的困难。

    在设计中你可能还需要考虑其他的事情。

    例如,如果此方法正在设置默认值,这不是类的构造函数中应该发生的事情吗?

    如果接口表示需要相同值的多个类类型,则这些类中的每一个可能都可以分成一个类,该类表示这些类中的每一个类与表示差异的另一个类之间的相同之处。

    IE.

    interface IA
    {
      int a;
      int b;
    }
    class X : IA
    {
      int a;
      int b;
      int c:
    }
    class Y : IA
    {
      int a;
      int b;
      int d:
    }
    

    可以重构为

    class A
    {
      int a;
      int b;
    }
    
    class X
    {
      A a;
      int c:
    }
    
    class Y
    {
      A a;
      int d:
    }
    

    然后类的构造函数可以设置它的默认值。你再也不用费劲去想一个好的函数名了。您还获得了一个更正交的系统,它更易于测试和处理更改。

    显然,这可能不完全是你的情况,我只是强调当你努力寻找一个好的名字,这是因为你的设计需要改进!

        4
  •  0
  •   Marcel Jackwerth    16 年前

    取决于您使用哪种语言:如果它支持 动态绑定 ,您可以去掉“typedata”后缀,让运行时完成它的工作。

    只要说出你的方法

    SetDefaultsFor(Customer c) { ... }
    SetDefaultsFor(Dog d)      { ... }
    
    推荐文章