source_file_structure.rst 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. .. _source-file-structure:
  2. 3. 源文件结构
  3. ----------------
  4. 源文件应由以下部分 **按顺序** 组成:
  5. - 1. 许可或版权信息(如果有的话)
  6. - 2. 包的声明
  7. - 3. 导入语句 (Import statements)
  8. - 4. 有且仅有一个顶级类
  9. 每个部分之间用 **一个** 空白行隔开。
  10. 3.1. 许可或版权信息(如果有的话)
  11. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  12. 如果文件中应包含许可证或版权信息,那么它应被放在此处。
  13. .. _package-statement:
  14. 3.2. 包声明
  15. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  16. 包声明 **不换行**。列限制(4.4节,:ref:`Column limit: 100 <column-limit>`)不适用于包声明。
  17. .. _import-statements:
  18. 3.3. 导入语句
  19. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  20. 3.3.1. 不使用通配符导入
  21. """"""""""""""""""""""""""""""""""""""""""""""""""
  22. **不使用** 任何形式的 **通配符导入** ,无论是静态的还是其他形式。
  23. 3.3.2. 不换行
  24. """"""""""""""""""""""""""""""""""""""""""""""""""
  25. 导入语句 **不换行** 。列限制(4.4节, :ref:`Column limit: 100 <column-limit>` )不适用于导入语句。
  26. 3.3.3. 排序和间距
  27. """"""""""""""""""""""""""""""""""""""""""""""""""
  28. 按以下顺序导入:
  29. - 所有的静态导入都在一个单独的块中。
  30. - 所有非静态导入都在一个单独的块中。
  31. 如果既有静态导入又有非静态导入,则两个块之间有一个空白行。导入语句之间没有其他空白行。
  32. 在每个块中,导入的名称按ASCII排序顺序出现。( **注意** :这不等同于按整个导入语句的ASCII排序,因为'.'排在';'之前。)
  33. (译者注:这种情况只会出现在包名结尾为'.'时,所以实际上可以忽略不计。例如: ``import packageA.ClassA; import packageA.ClassA.;`` ,如果按整个语句的ASCII排序,后句应排在前句之前,因为'.'在ASCII中排在';'前。除此之外其他情况按包名排序和按整个语句排序应得到相同的结果)
  34. 3.3.4. 不对类使用静态导入
  35. """"""""""""""""""""""""""""""""""""""""""""""""""
  36. 不使用静态导入来导入静态嵌套类,而是使用常规导入。
  37. 3.4. 类的声明
  38. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  39. .. _one-top-level:
  40. 3.4.1. 有且仅有一个顶级类声明
  41. """"""""""""""""""""""""""""""""""""""""""""""""""
  42. 每个顶级类都位于其自己的源文件中。
  43. 3.4.2. 类中内容的顺序
  44. """"""""""""""""""""""""""""""""""""""""""""""""""
  45. 类中成员和初始化器的顺序对于代码的可读性有很大影响。然而,并没有一个唯一正确的顺序,不同的类可能会以不同的方式排列其内容。
  46. 重要的是,每个类都使用 **某种逻辑顺序** ,并且在被问及时,其维护者可以做出相应的解释。例如,新方法不仅仅是习惯性地添加到类的末尾,因为那会导致内容是“按添加时间排序”的,这并不是一个有逻辑的排序方式。
  47. 3.4.2.1. 重载:永不分割
  48. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  49. 类中拥有同一名称的方法应出现在一个连续的组中,中间不应该有任何其他成员。对于多个构造函数(它们的名称总是相同的)也是如此。即使在方法之间的修饰符(如 ``static`` 或 ``private`` )不同时,此规则仍然适用。