C# Best Practices - Define Fields Appropriately
Backing Fields
private string description;
private int productId;
Features
A variable in a class
Holds data for each object
Object's data is only accessiable to that object
Fields are private.
Accessible outside of the class through property getters and setters
private string description = "coming soon";
Optional accessibility modifier + Data type + Name + Optional initialization
Best Practices
Do:
Define a meaningful name
Using camelCasing
Keep fields private
Use properties to provide access to the fields
Avoid:
Single character name
Abbreviations
Initialize to the field's default value (*)
Nullable Types
private decimal? cost;
private DateTime? availabilityDate;
Allow definition of a value OR null
Specified with a "?" suffix on the type
Distinguishes "not set" from the default value
Best Practices
Do:
Use on simple types to distinguish "not set" and "default value"
Use properties of the type such as HasValue and Value as needed
Avoid:
Using them if not necessary
Constants
public const double Pi = 3.14;
public const int Red = 0xFF0000;
Define in a class
Holds a hard-coded value that does not change
Must be assigned to an expression that can be fully evaluated at compile time
Think of a constant as a "compile-time" constant value
Are static
Optional accessibility modifier + "const" keyword + Data type + Name + Assigned Value
Best Practices
Do:
Define a meaningful name
Use PascalCasing
Use for compile-time values that will never change
Avoid:
Single character name
Abbreviations
All upper case
For fields that could change over time
Read-Only Fields
public readonly string DefaultMeasure = GetDefaultMeasure();
public readonly decimal MinimumPrice;
public Product()
{
MinimumPrice = RetrieveMinimumPrice();
}
A variable in a class
Holds a value that is initialized and then not changed
Must be initialized (In the declaration Or in a constructor)
Think of a read-only field as a "runtime" constant value
Optional accessibility modifier + Optional "static" keyword + "readonly" keyword + Data type + Name + Assigned value
Constant vs. Read-Only
Constant Field:
Compile-time constant
Assigned to an expression evaluated at compile time
Assigned on declaration
Only number,Boolean or string
Always static
Read-Only Field:
Runtime constant
Assigned to any valid expression at runtime
Assigned on declaration or constructor
Any data type
Optionally static
FAQ
1.Explain the data encapsulation principle
An object's data should be accessible only to the object
Backing fields containing in the object data should be marked as private
2.What's backing field?
A variable in a class used to retain each object's data.
3.When should you use a back field?
For every data retained field for an object
4.When should you use a constant?
When defining a field with a simple data type that will never change.
5.When should you use a read-only field?
When defining a field that is initialized from a file,table,or code but should not then be changed anywhere else in the application.
6.What is the difference between a constant and a read-only field?
A constant is static, assigned in the declaration, assigned to an expression that is fully evaluated at compile time.
A read-only field can be static or non-static,assigned in the declaration or constructor, assigned to any valid expression.
C# Best Practices - Define Fields Appropriately的更多相关文章
- C# Best Practices - Define Proper Classes
Application Architecture Define the components appropriately for the application and create project ...
- Java性能提示(全)
http://www.onjava.com/pub/a/onjava/2001/05/30/optimization.htmlComparing the performance of LinkedLi ...
- YASM User Manual
This document is the user manual for the Yasm assembler. It is intended as both an introduction and ...
- C#集合--Dictionary
字典(dictionary)是一个集合,其中每个元素都是一个键/值对.字典(Dictionaries)是常用于查找和排序的列表. .NET Framework通过IDictionary接口和IDict ...
- oracle Form Builer:FIND_FORM Built-in
Description Searches the list of forms and returns a form module ID when it finds a valid form with ...
- 我的VSTO之路(五):Outlook初步开发之联系人扩展
原文:我的VSTO之路(五):Outlook初步开发之联系人扩展 上一讲我们完成对Word的介绍,文本开始,我将着重介绍Outlook.Outlook是微软Office中一个非常实用的工具,尤其在一个 ...
- Qt中将QTableView中的数据导出为Excel文件
如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...
- scrapy入门
安装完scrapy后,创建一个新的工程: scrapy startproject tutorial 会创建一个tutorial文件夹有以下的文件: tutorial/ scrapy.cfg tutor ...
- Java EE (2) -- Java EE 6 Enterprise JavaBeans Developer Certified Expert(1z0-895)
Introduction to Java EE Gain an understanding of the Java Platform, Enterprise Edition (Java EE) Exa ...
随机推荐
- 本地环境下 WordPress 环境搭建与安装
本地环境:Ubuntu 14.04 使用软件: WordPress 4.1.1 中文优化版 EasyEngine 安装步骤: 安装 LNMP 环境; wget -qO ee rt.cx/ee & ...
- 【LeetCode题意分析&解答】38. Count and Say
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- Naive Bayes Theorem and Application - Theorem
Naive Bayes Theorm And Application - Theorem Naive Bayes model: 1. Naive Bayes model 2. model: discr ...
- Android TextWatcher应用实例
(1)使用TextWathcer限制输入字符个数布局中EditText在android布局中经常用到,对EditText中输入的内容也经常需要进行限制,我们可以通过TextWatcher去观察输入框中 ...
- 在CI框架下执行存储的方法
我直接把代码摆在这里分享哈 <?php /** * * Created by JetBrains PhpStorm. * User: lsl * Date: 14-1-8 * Time: 下午2 ...
- STL 全特化/偏特化
template<class T> class Compare { public: static bool isEqual(const T& lh,const T& rh) ...
- InitParam与ContextParm的异同
web.xml里面可以定义两种参数:(1)application范围内的参数,存放在servletcontext中,在web.xml中配置如下: xml 代码 <context-param> ...
- SGU 200 Cracking RSA (高斯消元)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意:给出m个整理,因子全部为前t个素数.问有多少 ...
- jade初学
jade是一个比ejs略难得模板.express的默认模本就是jade. 今天看了一下其实不是太难~~ 笔记: jade中使用缩进来定义HTML文档的层次结构 jade不需要关闭标签 给div添加id ...
- HTML5入门(一)
HTML简单介绍: HTML(HyperText Markup Language),超文本标记语言,是一种专门用于创建web的超文本文档编程语言,是我们看到的网页的源代码. 版本简介: 1997年推出 ...