首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET/Java和Ruby中域建模的主要区别是什么?

在.NET/Java和Ruby中域建模的主要区别是什么?
EN

Stack Overflow用户
提问于 2010-11-22 02:35:18
回答 1查看 124关注 0票数 1

我是一名经验丰富的.NET开发人员(6年),我真正进入了(非贫血)领域建模:聚合根,在构造函数参数中放置不变量,更多的方法,更少的公共类和成员。

我向我的Rubyist同事(一位我非常尊敬的开发人员)展示了我一直在做的事情,他说屏幕上的很多文字在Ruby中是必要的,但我不明白他到底是什么意思。所以我的问题是:

对于一个足够复杂以至于需要域模型的应用程序,在强类型的企业级平台(如.NET/J2EE )中实现的域模型与在Ruby (以Ruby方式)中实现的相同模型之间的主要区别是什么?Ruby是解决这类问题的合适工具吗?

EN

回答 1

Stack Overflow用户

发布于 2010-11-22 03:02:08

在我看来,强类型vs不会对代码量产生太大的影响。我用javascript做了很多复杂的领域模型,你不能真的利用松散类型和维护正常的代码。通常情况下,你应该保持实例字段的类型相同,而不是有时有对象,有时是数组-混用苹果和梨只会让你和其他人感到困惑。

唯一合适的可能是在接受不同参数的方法中。Javascript没有方法重载,因此同时接受苹果和梨可能是合适的。

你的朋友可能对ruby的意思是声明类的简洁语法。ruby中的所有实例字段都是私有的--并且有一个用于声明getter和setter、比较器等的简明语法。

Ruby

代码语言:javascript
复制
class Person
  attr_reader :name, :age
  attr_writer :name, :age
  def initialize(name, age)
    @name, @age = name, age
  end
  def <=>(person) # Comparison operator for sorting
    @age <=> person.age
  end
  def to_s
    "#@name (#@age)"
  end
end

Java

代码语言:javascript
复制
public class Person implements Comparable<Person> {
    private String name;
    private int age;
    public Person(String name, int age) {
      this.name = name;
      this.age = age;
    }
    public int compareTo(Person other) {
       return this.age - other.getAge();
    }
    public String getName() {
      return name;
    }
    public void setName(String name) {
       this.name = name;
    }
    public int getAge() {
      return age;
    }
    public void setAge(int age) {
      this.age = age;
    }
    public String toString() {
      return name + " ("+age+")";
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4239519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档