什么是编程风格(什么是编码风格)

2024-07-27 05:35:17 1

什么是编程风格(什么是编码风格)

这篇文章给大家聊聊关于什么是编程风格,以及什么是编码风格对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

什么是编码风格

编码风格实际上是指编程的基本原则在随着软件规模的增大,复杂性也有了增加,工作人员也逐渐看到在软件自下而上期中需要经常阅读程序,特别是在软件测试阶段和维护阶段,编写程序的人员与参与测试、维护的人员都要阅读程序,同时,也认识到阅读程序是软件开发和维护过程中的一个重要组成部分,且读程序的时间比写程序的时间还要多。此时,程序实际上需加强可读性,这样,就产生了一个程序的风格问题。在实践过程中,人们也发现良好的编码风格能在一定程度上弥补语言存在的缺陷,这样注意风格就可以提高程序的质量。总之,良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量。

关于编程风格

首先,编程风格并不同于其他的style,目的并不是形成自己独树一帜的风格,而是为了让你的程序易读,有利于团队合作以及别人帮你改错。风格是通用的C语言和C++语言的编程风格 (Java见下) 第一章:缩进格式 Tab是8个字符,于是缩进也是8个字符.有很多怪异的风格,他们将缩进格式定义为4个字符(设置为2个字符!)的深度,这就象试图将PI定义为3一样让人难以接受. 理由是:缩进的大小是为了清楚的定义一个块的开始和结束.特别是当你已经在计算机前面呆了20多个小时了以后,你会发现一个大的缩进格式使得你对程序的理解更容易. 现在,有一些人说,使用8个字符的缩进使得代码离右边很近,在80个字符宽度的终端屏幕上看程序很难受.回答是,但你的程序有3个以上的缩进的时候,你就应该修改你的程序. 总之,8个字符的缩进使得程序易读,还有一个附加的好处,就是它能在你将程序变得嵌套层数太多的时候给你警告.这个时候,你应该修改你的程序. 第二章:大符号的位置 另外一个C程序编程风格的问题是对大括号的处理.同缩进大小不同,几乎没有什么理由去选择一种而不选择另外一种风格,但有一种推荐的风格,它是Kernighan和Ritchie的经典的那本书带来的,它将开始的大括号放在一行的最后,而将结束大括号放在一行的第一位,如下所示: if (x is true) { we do y } 然而,还有一种特殊的情况:命名函数:开始的括号是放在下一行的第一位,如下:int function(int x) { body of function } 所有非正统的人会非难这种不一致性,但是,所有思维正常的人明白: (第一) K&R是___对___的,(第二)如果K&R不对,请参见第一条. (:-))......另外,函数也是特殊的,不一定非得一致. 需要注意的是结束的括号在它所占的那一行是空的,__除了__它跟随着同一条语句的继续符号.如"while"在do-while循环中,或者"else"在if语句中.如下: do { body of do-loop } while (condition); 以及 if (x == y) { .. } else if (x 》 y) { ... } else { .... } 理由: K&R. 另外,注意到这种大括号的放置方法减小了空行的数量,但却没有减少可读性.于是,在屏幕大小受到限制的时候,你就可以有更多的空行来写些注释了. 第三章:命名系统 C是一种简洁的语言,那么,命名也应该是简洁的.同MODULE-2以及ASCAL语言不同的是,C程序员不使用诸如ThisVariableIsATemporaryCounter之类的命名方式.一个C语言的程序员会将之命名为"tmp",这很容易书写,且并不是那么难以去理解. 然而,当混合类型的名字不得不出现的时候,描述性名字对全局变量来说是必要的了.调用一个名为"foo"全局的函数是很让人恼火的.全局变量(只有你必须使用的时候才使用它) ,就象全局函数一样,需要描述性的命名方式.假如你有一个函数用来计算活动用户的数量,你应该这样命名--"count_active_users()"--或另外的相近的形式,你不应命名为"cntusr()". 有一种称为Hungarian命名方式,它将函数的类型编码写入变量名中,这种方式是脑子有毛病的一种表现---编译器知道这个类型而且会去检查它,而这样只会迷惑程序员. --知道为什么Micro$oft为什么会生产这么多"臭虫"程序了把!!. 局部变量的命名应该短小精悍.假如你有一个随机的整数循环计数器,它有可能有"i",如果没有任何可能使得它能被误解的话,将其写作"loop_counter"是效率低下的.同样的,""tmp"可以是任何临时数值的函数变量. 如果你害怕混淆你的局部变量的名字,还有另外一个问题,就是称function-growth-hormone-imbalancesyndrome. 第四章:函数 函数应该短小而迷人,而且它只作一件事情.它应只覆盖一到两个屏幕(80*24一屏),并且只作一件事情,而且将它做好.(这不就是UNIX的风格吗,译者注). 一个函数的最大长度和函数的复杂程度以及缩进大小成反比.于是,如果你已经写了简单但长度较长的的函数,而且你已经对不同的情况做了很多很小的事情,写一个更长一点的函数也是无所谓的. 然而,假如你要写一个很复杂的函数,而且你已经估计到假如一般人读这个函数,他可能都不知道这个函数在说些什么,这个时候,使用具有描述性名字的有帮助的函数. 另外一个需要考虑的是局部变量的数量.他们不应该超过5-10个,否则你有可能会出错.重新考虑这个函数,将他们分割成更小的函数.人的大脑通常可以很容易的记住7件不同的事情,超过这个数量会引起混乱.你知道你很聪明,但是你可能仍想去明白2周以前的做的事情. 第5章:注释 注释是一件很好的事情,但是过多的注释也是危险的,不要试图区解释你的代码是注释如何如何的好:你应该将代码写得更好,而不是花费大量的时间去解释那些糟糕的代码. 通常情况下,你的注释是说明你的代码做些什么,而不是怎么做的.而且,要试图避免将注释插在一个函数体里:假如这个函数确实很复杂,你需要在其中有部分的注释,你应该回到第四章看看.你可以写些简短的注释来注明或警告那些你认为特别聪明(或极其丑陋)的部分,但是你必须要避免过多.取而代之的是,将注释写在函数前,告诉别人它做些什么事情,和可能为什么要这样做. 第六章:你已经深陷其中了. 不要着急.你有可能已经被告之"GUN emacs"会自动的帮你处理C的源代码格式,而且你已经看到它确实如此,但是,缺省的情况下,它的作用还是不尽如人意(实际上,他们比随便敲出来的东西还要难看- ainfinite number of monkeys typing into GNU emacs would never make a good program) 于是,你可以要么不要使用GUN emacs,要么让它使用sanervalules.使用后者,你需要将如下的语句输入到你的.emacs文件中.(defun linux-c-mode() "C mode with adjusted defaults for use with the Linux kernel."(interactive) (c-mode) (c-set-style"K&R") (setq c-basic-offset8)) 这会定义一个M-x Linux-c-mode的命令.当你hacking一个模块的时候,如何你将-*- linux-c -*-输入在最开始的两行,这个模式会自动起作用.而且,你也许想加入如下 (setq auto-mode-alist (cons ’("/usr/src/linux.*/.*.〖ch〗$" . linux-c-mode) auto-mode-alist)) 到你的.emacs文件中,这样的话,当你在/usr/src/linux下文件的时候,它会自动切换到linux-c-mode . 但是,假如你还不能让emaces去自动处理文件的格式,不要紧张,你还有一样东西: "缩进" . GNU的缩进格式也很死板,这就是你为什么需要加上几行命令选项.然而,这还不算太坏,因为GNU缩进格式的创造者也记得K&R的权威, (GNU没有罪,他们仅仅是在这件事情上错误的引导了人们) ,你要做的就只有输入选项"-kr -i8"(表示"K&R,缩进8个字符). "缩进"有很多功能,特别是当它建议你重新格式你的代码的时候,你应该看看帮助.但要记住: "缩进"不是风格很差的程序的万灵丹.***隐藏网址***JAVA编程风格简析 很久以来都在体会着JAVA的风格,现在做一简单陈述,希望大家多提宝贵意见。 对于一种好的编程语言,学习它的编程风格是很重要的。每种语言都有自己的编写和注释约定,当然所有语言都建立在最基本的约定之上。编程中最重要的并不是让代码按自己希望的方式运行,而是程序中那种自明的编程风格(这对于程序员的益处相信众多程序员都身有体会)!但这还不够,程序还应该具有可读、相对持久和可维护性。可读性非常重要,因为你不希望自己以前的作品在之后的阅读中给自己留下障碍,当然,更重要的是自己的程序能让其他程序员读懂并且修改。 下面我把工作中所理解的java风格做一简单总结,这是我所理解的好的编程风格和应用中我们应当如何使用java编写自己的代码的小Guide。这并不完全,希望大家帮我陆续总结各自的经验。 一般性概述 好的编程风格固然重要,但是你一定听说过一些程序员的个人风格。其实我们完全不必为那些所谓条条框框所累,但是作为原则是我们至少不能打破这些常规。我们应该在保持自己风格的同时尽量的把自己与编程潜原则靠拢。 可读性很容易达到,比如,让自己的代码缩排排列、名字采用描述性但不要过长(短名应仅仅用在非远程)、特殊名称比如pi应当被定义为final类型。模块性是编程需要注意的另一重点,把代码划分到类里,在类中把功能划分到方法中,别让一个类太大,否则在使用、修改和理解上都会造成不必要的麻烦,方法也一样,如果一个方法长度超过50行,它产生错误的概率将接近100%,尽量把大方法划分为小方法,编程中为避免重复编写,还应尽量调用JAVA标准类库。 尽量避免在写代码和注释时使用不同语言,经常见到论坛有朋友询问诸如在java中调用c、调用php、调用shell之类的问题,其实在编程中,我们应尽量使用一种语言去完成事情。另外就是不必最优化自己的代码,应该选择相对较优的算法就可以了。 类、方法和fields 类应体现出某种物质的基本概念,比如要编程实现“汽车”的组成,那么所有的汽车都可以用类Car实现。这个类应当包括域描述、属性描述和car的状态(color, number of doors, age等)和由car可完成的操作(getColor, setColor等)。为了提高类的可重用性,不要在类中有过多的描述,当然这也会增加错误产生的机会。 类名首字母大写,比如Date, String, Hashtable等 ... ... 类如下定义:(未使用Javadoc做注释): public class Car { /* Instance variables are placed either in the beginning or at the end of the class */ private int age; private Color color; /* The constructor should be placed in the beginning */ public Car(int age, Color color) { this.age = age; this.color = color; } /* Example method */ public int getAge() { return age; } /* The main method is optional, but looks like this. If it exists, it is either the first or the last method in the class */ public static void main(String args) { ... }}注意类名和大括号间的空格! 方法 方法一般定义为public。当然,如果方法仅仅在当前类用到可以定义为private,而如果希望一个子类沿用这个方法则不同,这时候的方法应定义为protected。 java中的方法定义很有趣,它们一般小写字母开头,如果有两个字组成,第二个字的首字母则大写。因此名字的描述性是至关重要的。这使你不用阅读整篇代码来判断这是一个什么方法。在给自己的方法取名时应尽量不要太短或者太长,另一个需要注意的是大多方法使用动词(动宾短语)。 例如: public void eat() {} public void eatBananas() {} Selector(选择器)方法有get前缀,后缀是它们将要get的,比如 public int getBananas() {} Mutator(存取器)方法则有set前缀,后缀则是他们要set的,比如 public void setBananas(int amount) {} 注意mutators大多无返回值。 方法的参数应当以如下方式给出: public void aMethod(type parameter1, type parameter2, ... , type parametern) {} 如果参数过长,也可以断开为几行,应对齐向下排列如: public void aMethod(type parameter1, type parameter2,... , type parametern, type parameter n+1,... , type parameterm, type parameter m+1) {} 另外要注意类的左束括号应在方法的右束括号之后而非下一行: public int aMethod() { int i = 0; if(i == 0) System.out.println("success!");}为了文件可读性好,还要注意语句最好写在同一行,当然一行写不下是可以断行的,比如行字母超过80。 fields 比如变量,如果不希望它永久有效,应设为private。如果一个变量在类中不发生任何动作(比如数据结构中的node)则可以设置为public,常量一般声明为public。如果不能确定一个变量到底该声明为什么,应暂且声明为private。 field的名字一般使用小写字母,不要使用下横线或其他特殊字符。 如果变量包含两个字,那么第二个字的首字母大写。比如: int i, j, k; Date date; double myField; 常量一般全部大写,也可以包含下横线: public static final int MAX_SIZE_OF_DATABASE fields的名字通常为名词。较重要的fields更应具备描述性,比如程序中包含一个游戏的得分,那可以用score来代表。如果变量变化较频繁,那使用一个单一字符来代表就ok了: i, j, k 通常代表整数 r, t, u, v, w 通常代表实数 x, y, z 通常是并列出现或代表浮点数 s, s1, s2, 通常代表字符串 c, ch 通常代表字符 f, file 通常代表文件 tmp, temp 通常代表临时变量 ctr, cnt, cntr 一般代表计数器(如果i, j, k这些变量已被使用) dummy, foo, bar 一般代表哑元变量 args 是main-method的主参数名 缩排与换行 每行长度不得超过80字符。如果需要可以折行时,也应当与上一行有共同的缩排距离。代码应如何交错、如何建立新行、在哪里建立允许、哪里不允许都有一些一般约定,缩排空格一般为2个或4个空格。 条件表达式 如果见到如下语法表达式: if (expr) statement1;else statement2;代码行向右错排两个空格如上所示。 如果在一个表达式中有超过一条的声明,则需要大括号: if (expr){ statement1; statement2;} else{ statement3; statement4;}有时我们会希望在表达式中使用表达式(比如条件嵌套),这时应注意else表达式,它的位置很容易出错!如例: if (expr1) { statement1; statement2;} else if (expr2) statement3;else if (expr3) { statement4; statement5;} else { statement6; statement7;}注意大括号位置! Loops while-loop语法如下: while (expr) { statement1; statement2;}for-loop语法如下: for (expr1; expr2; expr3){ statement1; statement2;}注意大括号位置!仅一条声明时大括号省略: while (expr) statement;for (expr1; expr2; expr3) statement;例如,我们写一个procedure写出1到10这十个数字: for (i = 1; i 《= 10; i++) System.out.println(i);try-catch语法形如: try { statements;} catch (ExceptionClass e) { statements;}如果try-catch语句后跟随finally子句则形如: try { statements;} catch (ExceptionClass e) { statements;} finally { statements;}新行 每一行最好只阐述一件事情。比如,一行包含一个声明、一个条件语句、一个循环等。不论多小,最好不要一行办两件事及以上。例如不要把一个if表达式或循环语句的主体放置在同一行,这样的表达式断行的易读性会更高。通常,互相协作的代码应放在一起,为保证代码美观可读,我们应将代码的不同代码段放置在不同的段落。不过要牢记断行不要太过分!比如: public int factorial(int n) { int result = 1; for(int i = 1; i 《= n; i++) result*=i; return result;}给自己的代码加入注释 注释就是类的描绘、方法存在的原因、它完成了什么以及它对它其中(变量)的作用域。假定阅读你代码的人已经知道这是什么语言,所以不需要注释语句功能,尽量使用简短而有描述力的注释。 Java有两种类型的注释: //This is a comment that continues until the end of the line. /* This is a comment. It goes on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and on and ends like this: */ /** * This is a JavaDoc comment. More about JavaDoc in the next section. */ 如果在注释中加入注释则会出错: /* You are not allowed to do anything like this /* because the compiler will complain, if you are lucky */ DON’T DO THIS! And don’t write comments in upper case either... */ 注释应放在它要解释内容上下,这样会让代码更易于理解。 不要注释一些语言的语句功能: i++; // Add 1 to i 更不要让自己的代码处于这种状态: for(int i = 1; i 《= n; i++) /* don’t place comments where they don’t belong */ result*=i; 较短的注释既可被放在被注释代码上下,而长注释则习惯性的放在代码之上: /* Comments can be placed before the block that is to be commented */ for(int i = 1; i 《= n; i++) result*=i; 或者: for(int i = 1; i 《= n; i++){ result*=i; // short comments can be placed like this tmp++; // if necessary, they continue here } 不要写没用的注释: i++; // change this later Excuse me,这句肯定是胡扯! 不要写自己都看不懂的注释: i++; // BMW BMW? 如果你能连续十天记住这是什么意思的话,那么你的记忆真是不错了。所以不要写没人能看懂的注释,ok? 最后重申一下:写简短而富于描述性的注释,把它们放在该放的地方,而不要考验你自己的记忆力! JavaDoc - 文档工具 JavaDoc不仅是另一种给代码加注释的仿佛咱,更是一个文档工具。类、方法和一些重要地方需要用JavaDoc来注释。这并不是说你可以放弃常规的注释,这两者在代码中应该是相辅相成、互相弥补的关系。 类被注释如: /** * Car represents cars ... A description of the class * should be place here. Note that the description begins * on the second line and that there is a space between * the asterix and the text. Next we will add some fields * indicating who the authors of the class are and * other useful information. Notice the newline! * * @author Jerry Meng * @version %I%, %G% */ public class Car { 注意JavaDoc结束和类开始间无空行。 方法被注释如: /** * A description of what the method does... * * @param n a description of the parameter * @return a description of the return value */ public int factorial(int n) { 某些不是全部,被JavaDoc注释区域如: /** * Short description of the variable (one line) */ type variable; 什么应当使用JavaDoc做注释?如何注释的恰当呢? 可以这样想,JavaDoc中所作的注释都可以在类的文档中看到。所有读这个类的文档的读者都会明白这个类所完成的功能、它包括的方法、如何使用这些方法及方法的返回值。一些作用域,比如public的变量或常量将会一目了然。任何不了解这个类内部结构的人都可以轻松的调用它。这便是你用JavaDoc可以轻松提供的信息。而使用一般注释的地方,一般是给那些可能修改你的类代码的程序员,它们一般描述了类的内部信息和结构。 下面我写一下car的类来描述一个编程风格好的java类应该是怎样的。当然这仅仅是一个小例子(apart from selector and mutator methods),仅仅是在考虑JAVA编程风格上一个参考而已。 import java.awt.Color;/** * This is a class representing cars. A car has certain features, such * as color, age, number of doors etc and a car can be repainted, * the tank can be filled etc. * * @author Jerry Meng * @version %I%, %G% */public class Car { /** * The maximum size of the tank in litres. */ private static final double TANK_SIZE = 100.0; /** * The color of the car. */ private Color color; /** * The age of the car. */ private int age; /** * The number of doors of the car. */ private int doors; /** * The amount of gasoline in the tank. */ private double gasoline; /** * Class constructor, which constructs a brand new, black car with * five doors and a full tank. */ public Car() { this(Color.black, 0, 5, TANK_SIZE); } /** * Class constructor specifying the color, age, number of doors * and litres of gasoline * * @param color The color of the car * @param age The age of the car * @param doors The number of doors * @param km Kilometres driven * @param gasoline The litres of gasoline */ public Car(Color color, int age, int doors, double gasoline) { this.color = color; this.age = age; this.doors = doors; this.gasoline = gasoline; } /** * Returns the color of the car */ public Color getColor() { return color; } /** * Repaints the car (i.e. changes its color) */ public void setColor(Color color) { this.color = color; } /** * Returns the age of the car */ public int getAge() { return age; } /** * Returns the number of doors of the car */ public int getDoors() { return doors; } /** * Returns the amount of gasoline in the tank */ public double getGasoline() { return gasoline; } /** * Fills the tank. The amount of gasoline cannot exceed * the size of the tank. In that case, the tank will be * filled to the maximum and the rest will run out in * the sand. * * @param gas The amount of gasoline to put in the tank */ public void setGasoline(double gas) { if(gasoline + gas 《= TANK_SIZE) gasoline+=gas; else gasoline = TANK_SIZE; }}***隐藏网址******隐藏网址***

良好的编程风格带来的好处是什么请举例说出有哪些公认的良好的编程风格

一个公认的、良好的编程风格可以减少编码的错误,减少读程序的时间,从而提高软件的开发效率。

什么是良好的程序设计风格

良好的程序设计风格全局变量用具有描述意义的名字,局部变量用短名字。函数采用动作性的名字。保持一致性。 缩进形式显示程序结构,使用一致的缩行和加括号风格。使用空行显示模块 充分而合理地使用程序注释 给函数和全局数据加注释。不要注释不好的代码,应该重写。不要与代码矛盾。 友好的程序界面,程序界面的方便性及有效性 不要滥用语言技巧 使用表达式的自然形式。利用括号排除歧义。分解复杂的表达式。当心副作用,像++ 这一类运算符具有副作用。 程序的健壮性:容错 模块化编程 1)应该特别注意程序的书写格式,让它的形式反映出其内在的意义结构。 程序是最复杂的东西(虽然你开始写的程序很简单,但它们会逐渐变得复杂起来),是需要用智力去把握的智力产品。良好的格式能使程序结构一目了然,帮助你和别人理解它,帮助你的思维,也帮助你发现程序中不正常的地方,使程序中的错误更容易被发现。 人们常用的格式形式是:逻辑上属于同一个层次的互相对齐;逻辑上属于内部层次的推到下一个对齐位置。请参考本课程的教科书或《C程序设计语言》(The C Programming Language,Brian W. Kernighan & Dennis M. Rirchie,清华大学出版社,大学计算机教育丛书(影印版,英文),1996。) 利用集成开发环境(IDE)或者其他程序器的功能,可以很方便地维护好程序的良好格式。请注意下面这几个键,在写程序中应该经常用到它们:Enter键(换一行),Tab键(将输入光标移到下一个对齐位置——进入新的一个层次),Backspace键(回到前一个对齐位置——退到外面的一个层次)。 --------------------------------------------------------------------------------2)用最规范的、最清晰的、最容易理解的方式写程序。注意人们在用C语言写程序的习惯写法,例如教科书中解决类似问题时所使用的写法,《C程序设计语言》一书中有许多极好的程序实例。在这里有一个关于程序模式的相关网页,里面也列出了一些常用的模式。 C语言是一个非常灵活的语言,你可能在这里用许多非常隐晦的方式写程序,但这样写出的程序只能是作为一种玩意儿,就像谜语或者智力游戏。这些东西可以用于消磨时间,但通常与实际无缘。在我们的C语言讨论组里提到过这种东西。 --------------------------------------------------------------------------------3)在编程中,应仔细研究编译程序给出的错误信息和警告信息,弄清楚每条信息的确切根源并予以解决。特别是,不要忽略那些警告信息,许多警告信息源自隐含的严重错误。我们有许多办法去欺骗编译程序,使它不能发现我们程序中的错误,但这样做最终受到伤害的只能是自己。 --------------------------------------------------------------------------------4)随时注意表达式计算过程和类型。注意运算符的优先级和结合顺序,不同类型的运算对象将怎样转换,运算的结果是什么类型的,等等。在必要的时候加上括号或显式的类型强制转换。 C语言的运算符很多,优先级定义也不尽合理,很难完全记清楚,因此要特别注意。需要时查一查(不要怕麻烦,相关网页有运算符表),或者直接按照自己的需要加上几个括号。 --------------------------------------------------------------------------------5)绝不去写依赖于运算对象求值顺序的表达式。对于普通二元运算符的运算对象,函数调用的各个实际参数,C语言都没有规定特定求值顺序。因此,我们不应该写那种依赖于特定求值顺序的表达式,因为不能保证它一定得到什么结果。例如下面的表达式和函数调用都是不合适的,很可能产生你预料不到的结果: scanf("%d %d", i++, a); m = n * n++; --------------------------------------------------------------------------------6)总保证一个函数的定义点和它的所有使用点都能看到同一个完整的函数原型说明。参看《从问题到程序》第103-107页。 --------------------------------------------------------------------------------7)总注意检查数组的界限和字符串(也以数组的方式存放)的结束。C语言内部根本不检查数组下标表达式的取值是否在合法范围内,也不检查指向数组元素的指针是不是移出了数组的合法区域。写程序的人需要自己保证对数组使用的合法性。越界访问可能造成灾难性的后果。 例:在写处理数组的函数时一般应该有一个范围参数;处理字符串时总检查是否遇到空字符’\0’。 --------------------------------------------------------------------------------8)绝不对空指针或者悬空的指针做间接访问。这种访问的后果不可预料,可能造成系统的破坏,也可能造成操作系统发现这个程序执行非法操作而强制将它终止。 --------------------------------------------------------------------------------9)对于所有通过返回值报告运行情况或者出错信息的库函数,都应该检查其执行是否正常完成。如果库函数没有完成操作(可能因为各种原因),随后的操作有可能就是非法的。这种错误也可能在程序运行中隐藏很长时间,到很后来才暴露出来,检查错误非常困难。 --------------------------------------------------------------------------------10)在带参数宏的定义字符串中,一般应该给整个字符串和其中出现的每个参数都加括号。 C语言预处理程序是个简单的文本替换程序,它根本不知道C语言的语法结构、优先级规则等。不写括号有时会产生我们不希望的代换结果。 --------------------------------------------------------------------------------11)所有外部变量名字、所有函数名字,应该只靠前6个字符就能够互相区分。因为有些老的编译程序只关注这些名字的前6个字符。如果不注意这个问题,就可能引起隐含的连接错误。

c++的编程风格说的是什么

就是编码风格了,比如if语句就算只有一句也用大括号括起来;每个函数前面都需要添加注释,注明该函数的作用,输入输出参数大括号另起一行,上下对齐每行中的空格不可以使用tab键,只能用空格一些运算符前后需要有一个空格等等。

GNU编程风格有什么优点

首先,编程风格并不同于其他的style,目的并不是形成自己独树一帜的风格,而是为了让你的程序易读,有利于团队合作以及别人帮你改错。 风格是通用的 C语言和C++语言的编程风格 (Java见下) 第一章:缩进格式 Tab是8个字符,于是缩进也是8个字符

各种流行的编程风格看看你是属于哪种

在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗?

散弹枪编程 这种编程风格是一种开发者使用非常随意的方式对待代码。“嗯,这个方法调用出错了……那么我会试着把传出的参数从 false 变成 true!”,当然依然出错,于是我们的程序员会这样:“好吧,那我就注释掉整个方法吧”,或是其它更为随意的处理方式,直到最后让这个调用成功。或是被旁边的某个程序员指出一个正确的方法。

如果我们把一个正规的程序员和一个撞大运的程序员放在一起做结地,那么,那个正规的程序可以马上变得发疯起来,并且,可以把正规的程序员的智商降到最低。两个撞大运的程序员不应该在一起做结对编程,这是因为他们破坏性的才能会造成的伤害会比只有一个还差。

撞大运编程

这是一种比散弹枪编程要温和一些的编程方式,我相信这种方式可能会是大多数程序员都会使用的方式。这种编程方式经常出现于程序员并不确切知道他们在干什么,也不知道所写的程序的本质和实际,但是可以让程序工作起来。他们以一种撞大运的方式在写程序,某些时候,他们根本就不知道某个错误的原因,就开始稀里糊涂地修改代码。一旦出现问题,他们会用两条路:1)停下来,理解一下程序,找到出错的原因。2)使用散弹枪编程方式开始解决问题。

测试驱动开发(Test Driven Development)是一种可以用来拯救上百万的撞大运编程的程序员。于是,他们有了一个更为NB的借口:只要我的程序通过测试了,你还有什么话好说?别骂我,测试驱动开发是一个不错的事物,其主要是用来控制撞大运开发所带来的问题。

Cargo-Cult 编程

关于Cargo Cults 这个词儿来自二战期间的某些上小岛里的土著人。在战争期间,美国利用这些小岛作为战场上的补给站。他们在这些小岛上修建自己的飞机跑道以用来运输战争物资。而那些小岛上的土著人从来没有见过飞机,当他们看到飞机的时候,觉得相当的牛,可以为那些白人带来各种各样的物品和食物。当二战结束后,那些土著人仿照着修建了飞机跑道,并用竹子修建了塔台。然后就在那期望着有飞机为他们送来物品和食物。

Cargo Cult 编程是一种非常流行的编程方法,使用这种方法的程序员会学习其它编程高手的编程方法,虽然他们并不知道为什么高手们要那样做,但是他们觉得那样做可以让程序工作起来。举个例子,当时有大量的程序员在J2EE出现的第一年中过度地使用了EJBs和Entity Beans。

刻舟求剑编程

刻舟求剑是一个很流行的寓言了。这种风格的编程在程序员的圈子里是非常常见的。比如,有一天,你发现了一个空指会的异常,于是你到了产生空指针异常的地方,简单地放上一个判断: if (p != NULL)。

是的,这样的fix可以让你的程序工作起来,但你并没有真正地解决问题。你只不过是在你的船边记下了剑掉下去的位置,这样做只不过把问题隐藏起来,最终只会让你的程序的行为变得神出鬼没。你应该找到为什么指针会为空的原因,然后再解决这个问题。

设计模式驱动型编程

正如这种编程的名字所说的,这种编程风格使用大量的设计模式,在你的程序中,四处都是设计模式,你的代码到处都是Facade,Observer ,Strategy,Adapter,等等等等。于是,你的程序要处理的业务逻辑被这些设计模式打乱得无法阅读,最后,也不知道是业务需求重来,还是设计模式重要,总之,实际业务需求的程序逻辑被各种设计模式混乱得不堪入目。

侦探型编程

在解决一个Bug的时候,侦探型程序员会调查这个Bug的原因。然后,则调查引发这个BUG的原因的原因。再然后,其会分析修正代码后是否会导致其它代码失败的因果关系。再然后然后,他会使用文本搜索查找所有使用这个改动的代码,并继续查找更上一级的调用代码。最后,这个程序员会写下30个不同的情形的测试案例,就算这些测试案例和那个Bug没有什么关系,最最后,这个程序员有了足够多的信心,并且精确地修正了一个拼写错误。

与此同时,其它一个正常的程序员修正了其它5个Bug。

屠宰式编程

使用这种风格的程序员,对重构代码有着一种难以控制的极端冲动。他们几乎会重构所有经手的代码。就算是在产品在Release的前夜,当他在修正几个拼写错误的bug同时,其会修改10个类,以及重构与这10个类有联系的另20个类,并且修改了代码的build脚本,以及5个部署描述符。

根据你编写的经验或是了解你认为什么是好的编程风格

个人认为编程风格和个人性格不无关系,好的编程风格无非就是可用性强,可读性好。其中主要几点:1,注释清晰。2,变量命名合理。3,代码不冗余。4,用户体验好。

关于什么是编程风格到此分享完毕,希望能帮助到您。

什么是编程风格(什么是编码风格)

本文编辑:admin

本文相关文章:


什么是编程风格(良好的编程风格带来的好处是什么请举例说出有哪些公认的良好的编程风格)

什么是编程风格(良好的编程风格带来的好处是什么请举例说出有哪些公认的良好的编程风格)

本文目录良好的编程风格带来的好处是什么请举例说出有哪些公认的良好的编程风格什么是良好的程序设计风格各种流行的编程风格看看你是属于哪种根据你编写的经验或是了解你认为什么是好的编程风格关于编程风格什么是编码风格GNU编程风格有什么优点c++的编

2024年7月24日 14:29

更多文章:


usb万能驱动下载win7(华硕x45vd的usb3.0驱动下载在哪里啊)

usb万能驱动下载win7(华硕x45vd的usb3.0驱动下载在哪里啊)

今天给各位分享华硕x45vd的usb3.0驱动下载在哪里啊的知识,其中也会对华硕x45vd的usb3.0驱动下载在哪里啊进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录华硕x45vd的usb3.0驱动下载在哪里

2024年7月27日 17:15

惠普1000打印机驱动(惠普laserjet 1000 series win7驱动)

惠普1000打印机驱动(惠普laserjet 1000 series win7驱动)

本文目录惠普laserjet 1000 series win7驱动惠普打印机1000无法连接电脑怎么办如何安装hp deskjet 1000打印机驱动程序win7 64位下如何安装HP laserjet 1000驱动惠普1000打印机驱动安

2024年6月14日 21:55

cad教学视频全集免费(哪里有免费可下载的CAD视频教程 从入门开始的)

cad教学视频全集免费(哪里有免费可下载的CAD视频教程 从入门开始的)

大家好,cad教学视频全集免费相信很多的网友都不是很明白,包括哪里有免费可下载的CAD视频教程 从入门开始的也是一样,不过没有关系,接下来就来为大家分享关于cad教学视频全集免费和哪里有免费可下载的CAD视频教程 从入门开始的的一些知识点,

2024年9月7日 01:10

cf修复工具(我打游戏(CF)老是出现网络异常,与主机连接失败,怎么解决呀)

cf修复工具(我打游戏(CF)老是出现网络异常,与主机连接失败,怎么解决呀)

本文目录我打游戏(CF)老是出现网络异常,与主机连接失败,怎么解决呀修复CF工具在那里cf怎么一键修复呢cf老是网络出现异常,与服务器断开连接解决方法cf怎样修复怎么修复《cf》文件cf进不去游戏,提示:启动失败,建议使用修复工具解决cf客

2023年9月21日 19:40

湘财证券app官网下载(湘财证券手机 下载)

湘财证券app官网下载(湘财证券手机 下载)

本篇文章给大家谈谈湘财证券app官网下载,以及湘财证券手机 下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录湘财证券手机 下载如何下载湘财证券手机版的通达信湘财证券官网怎么从11.11号下午6点后就打不开湘财证券超强版行情

2024年8月31日 04:21

可以赚钱并提现到微信的游戏(挣钱游戏软件一天赚100微信提现没有广告)

可以赚钱并提现到微信的游戏(挣钱游戏软件一天赚100微信提现没有广告)

大家好,今天小编来为大家解答以下的问题,关于可以赚钱并提现到微信的游戏,挣钱游戏软件一天赚100微信提现没有广告这个很多人还不知道,现在让我们一起来看看吧!本文目录挣钱游戏软件一天赚100微信提现没有广告赚钱游戏哪个赚钱多又安全 可提现微信

2024年6月23日 13:09

nds4ios(nds4ios游戏放哪里nds4ios模拟器游戏存放路径)

nds4ios(nds4ios游戏放哪里nds4ios模拟器游戏存放路径)

本文目录nds4ios游戏放哪里nds4ios模拟器游戏存放路径ios怎么安装nds模拟器iphone5s nds4ios模拟器闪退怎么办苹果5 snds闪退解决方法教程nds4ios游戏放哪里nds4ios模拟器游戏存放路径  如果安装的

2024年5月15日 07:48

行程单是什么?飞机行程单是什么

行程单是什么?飞机行程单是什么

本文目录行程单是什么飞机行程单是什么飞机票行程单是什么行程单是什么样的行程单是什么行程单是《航空运输电子客票行程单》由国家税务总局监制并按照纳入税务机关发票管理,机票行程单正式上线是旅客购买国内航空运输电子客票的付款及报销的凭证。对于行程单

2024年2月15日 08:00

玩具汽车比赛(玛纳斯 车模比赛时间)

玩具汽车比赛(玛纳斯 车模比赛时间)

本文目录玛纳斯 车模比赛时间一部车子比赛动漫 比赛时用手丢出去然后开始 男主的车是一个男的要他挑的 比赛赛道是一个机器直接曾经让80、90后痴狂的四驱车现在还有人玩吗玛纳斯 车模比赛时间共青团玛纳斯县委员会少先队玛纳斯县工作委员会玛纳斯县教

2024年7月24日 01:33

热血屠龙手游有几个版本?热血屠龙装备强化攻略

热血屠龙手游有几个版本?热血屠龙装备强化攻略

本文目录热血屠龙手游有几个版本热血屠龙装备强化攻略《热血屠龙》战士技能详解 详解怎么玩热血屠龙里的法师和道士有什么区别,哪个更厉害一点热血屠龙道士职业玩法介绍 详解怎么玩个人玩家可以接热血屠龙H5代理吗原始传奇跟热血屠龙有什么区别热血屠龙手

2024年6月28日 12:57

龙城战歌手游官网(手游龙城战歌为什么别人看不到我说话是不是被禁言了)

龙城战歌手游官网(手游龙城战歌为什么别人看不到我说话是不是被禁言了)

“龙城战歌手游官网”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看龙城战歌手游官网(手游龙城战歌为什么别人看不到我说话是不是被禁言了)!本文目录手游龙城战歌为什么别人看不到我说话是不是被禁言了为什么龙城战歌耗流量龙城战歌贪玩

2024年6月26日 02:17

悬赏平台app排行榜(地推十大推广app平台)

悬赏平台app排行榜(地推十大推广app平台)

其实悬赏平台app排行榜的问题并不复杂,但是又很多的朋友都不太了解地推十大推广app平台,因此呢,今天小编就来为大家分享悬赏平台app排行榜的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录地推十大推广app平台目

2024年7月15日 14:02

卫星定位天气预报免费下载(即刻天气预报几点几分下雨免费下载)

卫星定位天气预报免费下载(即刻天气预报几点几分下雨免费下载)

今天给各位分享即刻天气预报几点几分下雨免费下载的知识,其中也会对即刻天气预报几点几分下雨免费下载进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录即刻天气预报几点几分下雨免费下载手机天气预报软件,哪个好用,准确怎

2024年5月16日 23:20

火狐浏览器国际版下载(火狐浏览器便携版和国际版有什么区别)

火狐浏览器国际版下载(火狐浏览器便携版和国际版有什么区别)

各位老铁们,大家好,今天由我来为大家分享火狐浏览器国际版下载,以及火狐浏览器便携版和国际版有什么区别的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录

2024年4月10日 04:55

第一ppt课件免费下载(向您推荐几个比较好的ppt模板下载网站)

第一ppt课件免费下载(向您推荐几个比较好的ppt模板下载网站)

大家好,关于第一ppt课件免费下载很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于向您推荐几个比较好的ppt模板下载网站的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有

2024年9月9日 13:15

今晚世界杯预选赛直播(中国VS新加坡直播 中国对新加坡直播 世界杯预选赛中国国足VS新加坡男足电视转播CCTV5)

今晚世界杯预选赛直播(中国VS新加坡直播 中国对新加坡直播 世界杯预选赛中国国足VS新加坡男足电视转播CCTV5)

“今晚世界杯预选赛直播”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看今晚世界杯预选赛直播(中国VS新加坡直播 中国对新加坡直播 世界杯预选赛中国国足VS新加坡男足电视转播CCTV5)!本文目录中国VS新加坡直播 中国对新加

2024年7月24日 21:05

植物战怪兽的游戏攻略?植物大战僵尸的僵王博士怎么打

植物战怪兽的游戏攻略?植物大战僵尸的僵王博士怎么打

本文目录植物战怪兽的游戏攻略植物大战僵尸的僵王博士怎么打游戏王中植物族的必备卡和禁卡有哪些植物大战僵尸里面一个大僵尸背着小僵尸的僵尸怎么打啊战斗怪兽里面,哪支植物族怪兽攻击最高或者效果最好(要可以特殊召唤的游戏王中植物族里的同调怪兽和融合怪

2024年7月5日 21:45

微信公众账号登录官网(怎么进入微信公众号平台)

微信公众账号登录官网(怎么进入微信公众号平台)

这篇文章给大家聊聊关于微信公众账号登录官网,以及怎么进入微信公众号平台对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录怎么进入微信公众号平台如何找到微信公众平台登录入口微信公众平台登录微信公众平台登录微信公众平台登录官网如何找

2024年8月2日 04:35

league of legends(英雄联盟全称是什么)

league of legends(英雄联盟全称是什么)

本文目录英雄联盟全称是什么英雄联盟的英文全称是什么LOL的全称是什么lol怎么读英雄联盟英文名字怎么读英雄联盟英文“英雄联盟”的英文全称是什么英雄联盟的回放文件rolf用League of Legends.exe端打开就报错,重新下载游戏也

2024年5月24日 00:47

安卓系统的手机怎么查看有没程序在后台运行?为什么我安装进程终结者提示更新错误

安卓系统的手机怎么查看有没程序在后台运行?为什么我安装进程终结者提示更新错误

本文目录安卓系统的手机怎么查看有没程序在后台运行为什么我安装进程终结者提示更新错误进程终结者是一款什么样的软件,有什么功能特朗普会是美国全球霸权的终结者吗安卓系统的手机怎么查看有没程序在后台运行可参考vivo手机查看后台程序的方法:全面屏机

2023年7月12日 01:00

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1731
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索