![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
.NET
По правилам написания кода класс с полем, инициализирующемся в конструкторе и свойством, которое дает доступ для чтения этого поля надо писать так:
public class SomeClass
{
private readonly string configMetaID;
public string ConfigMetaID{get{return configMetaID;}}
public SomeClass(string configMetaID)
{
this.configMetaID = configMetaID;
}
}
Достаточно вместо return configMetaID; написать return ConfigMetaID; и получим Stack overflow. А сделать это очень легко, так как используется автодополнение кода. Кроме того, можно забыть написать this. в конструкторе и поле останется не проинициализированным.
Правила кодирования заимствованны из Java, где свойств нету, а есть геттеры и сеттеры, префиксы get и set которых там не дадут устроить переполнение стека из-за ошибки.
Есть вариант обхода - сделать поле public, а свойство выкинуть. Оно все равно readonly, поэтому испортить снаружи его никто не сможет. Но это в чем-то противоречит правилам кодирования - поля делать public - плохой тон.
По правилам написания кода класс с полем, инициализирующемся в конструкторе и свойством, которое дает доступ для чтения этого поля надо писать так:
public class SomeClass
{
private readonly string configMetaID;
public string ConfigMetaID{get{return configMetaID;}}
public SomeClass(string configMetaID)
{
this.configMetaID = configMetaID;
}
}
Достаточно вместо return configMetaID; написать return ConfigMetaID; и получим Stack overflow. А сделать это очень легко, так как используется автодополнение кода. Кроме того, можно забыть написать this. в конструкторе и поле останется не проинициализированным.
Правила кодирования заимствованны из Java, где свойств нету, а есть геттеры и сеттеры, префиксы get и set которых там не дадут устроить переполнение стека из-за ошибки.
Есть вариант обхода - сделать поле public, а свойство выкинуть. Оно все равно readonly, поэтому испортить снаружи его никто не сможет. Но это в чем-то противоречит правилам кодирования - поля делать public - плохой тон.
no subject
Date: 2006-09-17 06:16 pm (UTC)Это меня задрала путаница вариантов оформления кода в голове(венгерская нотация, дельфи и явовско-сишарпная) и я удосужился прочесть guidelines и пытаюсь им следовать.
До того было проще - я просто оформлял в венгерской нотации :)
no subject
Date: 2006-09-17 06:55 pm (UTC)венгерку, кстати, рекомендуют в этой книжке (есть в pdf) --
http://www.apress.com/book/bookDisplay.html?bID=10029
но болезненно усложненный шизовариант.
no subject
Date: 2006-09-17 06:57 pm (UTC)no subject
Date: 2006-09-18 07:44 am (UTC)no subject
Date: 2006-09-18 07:46 am (UTC)