我正在研究初级(也许是高级)软件工程师的常见错误和不良假设.
你最久以来最终纠正的假设是什么?
例如,我误解了整数的大小不是标准,而是取决于语言和目标.国家有点尴尬,但确实如此.
坦率地说; 你有什么坚定的信念,大致你维持这个假设多久了?它可以是关于编程,编程语言或计算机科学的算法,语言,编程概念,测试或其他任何内容.
我们的商业模式中有一个学生班.令我感到奇怪的是,如果我们操纵另一名学生的一名学生,学生的私人成员是可见的...这让我觉得有点不雅:)
class Program {
static void Main(string[] args) {
Student s1 = new Student();
Student s2 = new Student();
s1.ExamineStudentsMembers(s2);
}
}
public class Student {
private String _studentsPrivateMember;
public Student() {
_studentsPrivateMember = DateTime.Now.Ticks.ToString();
}
public void ExamineStudentsMembers(Student anotherStudent) {
//this seems very wrong
Console.WriteLine(anotherStudent._studentsPrivateMember);
}
}
Run Code Online (Sandbox Code Playgroud)
我可以对设计考虑因素/含义有所了解吗?您似乎无法隐藏兄弟姐妹的信息.有没有办法将字段或成员标记为对同一类的其他实例隐藏?
可能重复:
为什么私有字段对该类型是私有的,而不是实例?
考虑以下课程:
public class Test
{
protected string name;
private DateTime dateTime;
public Test(string name)
{
this.name = name;
this.dateTime = DateTime.Now;
}
public Test(Test otherObject)
{
this.name = otherObject.name;
this.dateTime = otherObject.GetDateTime();
}
private DateTime GetDateTime()
{
return dateTime;
}
public override string ToString()
{
return name + ":" + dateTime.Ticks.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的构造函数中,我正在调用私有或受保护的东西otherObject.为什么这可能?我一直认为私有是真的私有(暗示只有对象可以调用该方法/变量)或受保护(只能通过重载访问).
为什么以及何时需要使用这样的功能?
我缺少一些OO逻辑/原理吗?