STYLE
上传用户:gddssl
上传日期:2007-01-06
资源大小:1003k
文件大小:4k
源码类别:

编辑器/阅读器

开发平台:

DOS

  1.        Vim coding style
  2. These are the rules to use when making changes to the Vim source code.  Please
  3. stick to these rules, to keep the sources readable and maintainable.
  4. This list is not complete.  Look in the source code for more examples.
  5. MAKING CHANGES
  6. The basic steps to make changes to the code:
  7. 1. Adjust the documentation.  Doing this first gives you an impression of how
  8.    your changes affect the user.
  9. 2. Make the source code changes.
  10. 3. Check ../doc/todo.txt if the change affects any listed item.
  11. 4. Make a patch with "diff -c" against the unmodified code and docs.
  12. 5. Make a note about what changed and include it with the patch.
  13. USE OF COMMON FUNCTIONS
  14. Some functions that are common to use, have a special Vim version.  Always
  15. consider using the Vim version, because they were introduced with a reason.
  16. NORMAL NAME VIM NAME DIFFERENCE OF VIM VERSION
  17. free() vim_free() Checks for freeing NULL
  18. malloc() alloc() Checks for out of memory situation
  19. malloc() lalloc() Like alloc(), but has long argument
  20. strcpy() STRCPY() Includes cast to (char *), for char_u * args
  21. strchr() vim_strchr() Accepts special characters
  22. strrchr() vim_strrchr() Accepts special characters
  23. isspace() vim_isspace() Can handle characters > 128
  24. iswhite() vim_iswhite() Only TRUE for Tab and space
  25. memcpy() vim_memmove() Handles overlapped copies
  26. bcopy() vim_memmove() Handles overlapped copies
  27. memset() vim_memset() Uniform for all systems
  28. NAMES
  29. Because of the requirement that Vim runs on as many systems as possible, we
  30. need to avoid using names that are already defined by the system.  This is a
  31. list of names that are known to cause trouble.  The name is given as a regexp
  32. pattern.
  33. is.*() POSIX, ctype.h
  34. to.*() POSIX, ctype.h
  35. d_.* POSIX, dirent.h
  36. l_.* POSIX, fcntl.h
  37. gr_.* POSIX, grp.h
  38. pw_.* POSIX, pwd.h
  39. sa_.* POSIX, signal.h
  40. mem.* POSIX, string.h
  41. str.* POSIX, string.h
  42. wcs.* POSIX, string.h
  43. st_.* POSIX, stat.h
  44. tms_.* POSIX, times.h
  45. tm_.* POSIX, time.h
  46. c_.* POSIX, termios.h
  47. MAX.* POSIX, limits.h
  48. __.* POSIX, system
  49. _[A-Z].*     POSIX, system
  50. E[A-Z0-9]* POSIX, errno.h
  51. wait don't use as argument to a function, conflicts with types.h
  52. new C++ reserved keyword
  53. try Borland C++ doesn't like it to be used as a variable.
  54. basename() GNU string function
  55. dirname() GNU string function
  56. get_env_value() Linux system function
  57. STYLE
  58. General rule: One statement per line.
  59. Wrong:     if (cond) a = 1;
  60. OK:     if (cond)
  61. a = 1;
  62. Wrong:     while (cond);
  63. OK:     while (cond)
  64. ;
  65. Wrong:     do a = 1; while (cond);
  66. OK:     do
  67. a = 1;
  68.     while (cond);
  69. Functions start with:
  70. Wrong: int function_name(int arg1, int arg2)
  71. OK: /*
  72.  * Explanation of what this function is used for.
  73.  *
  74.  * Return value explanation.
  75.  */
  76.     int
  77. function_name(arg1, arg2)
  78.     int     arg1;     /* short comment about arg1 */
  79.     int     arg2;     /* short comment about arg2 */
  80. NOTE: Don't use ANSI style function declarations.  Some people still have to
  81. use compilers that don't support it.
  82. SPACES AND PUNCTUATION
  83. No space between a function name and the bracket:
  84. Wrong:  func (arg);
  85. OK: func(arg);
  86. Do use a space after if, while, switch, etc.
  87. Wrong: if(arg) for(;;)
  88. OK if (arg) for (;;)
  89. Use a space after a comma and semicolon:
  90. Wrong:  func(arg1,arg2); for (i = 0;i < 2;++i)
  91. OK: func(arg1, arg2); for (i = 0; i < 2; ++i)
  92. Use a space before and after '=', '+', '/', etc.
  93. Wrong: var=a*5;
  94. OK: var = a * 5;
  95. In general: Use empty lines to group lines of code together.  This makes it
  96. more easy to quickly see what is being done.