我在一些具有以下常量的C#项目中遇到了一堆代码:
const int ZERO_RECORDS = 0;
const int FIRST_ROW = 0;
const int DEFAULT_INDEX = 0;
const int STRINGS_ARE_EQUAL = 0;
Run Code Online (Sandbox Code Playgroud)
有没有人见过这样的东西?有没有办法合理化使用常量来表示语言结构?IE:C#在数组中的第一个索引位于第0位.我认为如果开发人员需要依赖常量来告诉他们语言是0,那么就会出现更大的问题.
这些常量的最常见用法是处理数据表或"for"循环.
我是不是觉得这些是代码味道?我觉得这些并不比以下更好:
const int ZERO = 0;
const string A = "A";
Run Code Online (Sandbox Code Playgroud) 返回null值或从API方法抛出异常是否更好?
返回null需要全部进行丑陋的空检查,如果未选中返回则会导致严重的质量问题.
抛出异常会强制用户对错误条件进行编码,但由于Java异常冒泡并强制调用者代码处理它们,因此通常使用自定义异常可能是一个坏主意(特别是在java中).
有什么健全和实用的建议?