??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲久久久久,91夜夜蜜桃臀一区二区三区,电影一区中文字幕http://www.aygfsteel.com/romkk-shi/archive/2007/08/14/136582.html路边的石?java路边的石?javaTue, 14 Aug 2007 02:27:00 GMThttp://www.aygfsteel.com/romkk-shi/archive/2007/08/14/136582.htmlhttp://www.aygfsteel.com/romkk-shi/comments/136582.htmlhttp://www.aygfsteel.com/romkk-shi/archive/2007/08/14/136582.html#Feedback0http://www.aygfsteel.com/romkk-shi/comments/commentRss/136582.htmlhttp://www.aygfsteel.com/romkk-shi/services/trackbacks/136582.html

一、排版:
  1.关键词和操作W之间加适当的空根{?
  2.相对独立的程序块与块之间加空?
  3.较长的语句、表辑ּ{要分成多行书写?
  4.划分出的新行要进行适应的羃q,使排版整齐,语句可读?
  5.长表辑ּ要在低优先操作W处划分新行Q操作符攑֜新行之首?
  6.循环、判断等语句中若有较长的表达式或语句Q则要进行适应的划分?
  7.若函数或q程中的参数较长Q则要进行适当的划分?
  8.不允许把多个短语句写在一行中Q即一行只写一条语句?
  9.函数或过E的开始、结构的定义及@环、判断等语句中的代码都要采用~进风格?
  10.C/C++语言是用大括?#8216;{’?#8216;}’界定一D늨序块的,~写E序块时‘{’?
   ‘}’应各独占一行ƈ且位于同一列,同时与引用它们的语句左对齐。在函数?
    的开始、类的定义、结构的定义、枚丄定义以及if、for、do、while?
    switch、case语句中的E序都要采用如上的羃q方式?

二、注?
  1.注释要简单明了?
  2.边写代码Ҏ释,修改代码同时修改相应的注释,以保证注释与代码的一致性?
  3.在必要的地方注释Q注释量要适中。注释的内容要清楚、明了,含义准确Q防?
   注释二义性。保持注释与其描q的代码盔RQ即注释的就q原则?
  4.对代码的注释应放在其上方盔R位置Q不可放在下面?
  5.Ҏ据结构的注释应放在其上方盔R位置Q不可放在下面;对结构中的每个域
   的注释应攑֜此域的右方;同一l构中不同域的注释要寚w?
  6.变量、常量的注释应放在其上方盔R位置或右斏V?
  7.全局变量要有较详l的注释Q包括对其功能、取D围、哪些函数或q程存取?
   以及存取时注意事等的说明?
  8.在每个源文g的头部要有必要的注释信息Q包括:文g名;版本P作者;生成
   日期Q模块功能描qͼ如功能、主要算法、内部各部分之间的关pR该文g与其
   它文件关pȝQ;主要函数或过E清单及本文件历史修改记录等?
  9.在每个函数或q程的前面要有必要的注释信息Q包括:函数或过E名Uͼ功能?
   qͼ输入、输出及q回D明;调用关系及被调用关系说明{?

三、命?
  1.较短的单词可通过L“元音”形成~写Q?
  2.较长的单词可取单词的头几发符的优先Qƈ用括h表辑ּ的操作顺序,?
   免用默认优先?
  3.使用匈牙利表C法

四、可L?
  1.避免使用不易理解的数字,用有意义的标识来替代?
  2.不要使用难懂的技巧性很高的语句?
  3.源程序中关系较ؓ紧密的代码应可能相邅R?

五、变?
  1.L没必要的公共变量?
  2.构造仅有一个模块或函数可以修改、创建,而其余有x块或函数只访问的公共
   变量Q防止多个不同模块或函数都可以修攏V创建同一公共变量的现象?
  3.仔细定义q明公共变量的含义、作用、取D围及公共变量间的关系?
  4.明确公共变量与操作此公共变量的函数或q程的关p,如访问、修改及创徏{?
  5.当向公共变量传递数据时Q要十分心Q防止赋与不合理的值或界{现象发生?
  6.防止局部变量与公共变量同名?
  7.仔细设计l构中元素的布局与排列顺序,使结构容易理解、节省占用空_q减
   引赯用现象?
  8.l构的设计要量考虑向前兼容和以后的版本升Qƈ为某些未来可能的应用?
   留余圎ͼ如预留一些空间等Q?
  9.留心具体语言及编译器处理不同数据cd的原则及有关l节?
  10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化?
  11.~程Ӟ要注意数据类型的强制转换?

六、函数、过E?
  1.函数的规模尽量限制在200行以内?
  2.一个函数最好仅完成一件功能?
  3.为简单功能编写函数?
  4.函数的功能应该是可以预测的,也就是只要输入数据相同就应生同L输出?
  5.量不要~写依赖于其他函数内部实现的函数?
  6.避免设计多参数函敎ͼ不用的参数从接口中L?
  7.用注释详l说明每个参数的作用、取D围及参数间的关系?
  8.查函数所有参数输入的有效性?
  9.查函数所有非参数输入的有效性,如数据文件、公共变量等?
  10.函数名应准确描述函数的功能?
  11.避免使用无意义或含义不清的动词ؓ函数命名
  12.函数的返回D清楚、明了,让用者不Ҏ忽视错误情况?
  13/明确函数功能Q精(而不是近|地实现函数设计?
  14.减少函数本n或函数间的递归调用?
  15.~写可重入函数时Q若使用全局变量Q则应通过关中断、信号量Q即P、V操作Q?
    {手D对其加以保护?

七、可?
  1.在编写代码之前,应预先设计好E序调试与测试的Ҏ和手D,q设计好各种?
  开兛_相应试代码如打印函数等?
  2.在进行集成测?pȝ联调之前Q要构造好试环境、测试项目及试用例Q同?
  仔细分析q优化测试用例,以提高测试效率?

八、程序效?
  1.~程时要l常注意代码的效率?
  2.在保证Y件系l的正确性、稳定性、可L及可测性的前提下,提高代码效率?
  3.不能一呛_q求代码效率Q而对软g的正性、稳定性、可L及可测性造成?
   响?
  4.~程Ӟ要随时留心代码效率;优化代码Ӟ要考虑周全?
  5.要仔l地构造或直接用汇~编写调用频J或性能要求极高的函数?
  6.通过对系l数据结构划分与l织的改q,以及对程序算法的优化来提高空间效率?
  7.在多重@环中Q应最忙的循环攑֜最内层?
  8.量减少循环嵌套层次?
  9.避免循环体内含判断语句,应将循环语句|于判断语句的代码块之中?
  10.量用乘法或其它Ҏ代替除法Q特别是点q算中的除法?

九、质量保?
  1.在Y件设计过E中构筑软g质量?
  代码质量保证优先原则
  Q?Q正性,指程序要实现设计要求的功能?
  Q?Q稳定性、安全性,指程序稳定、可靠、安全?
  Q?Q可试性,指程序要h良好的可试性?
  Q?Q规?可读性,指程序书写风根{命名规则等要符合规范?
  Q?Q全局效率Q指软gpȝ的整体效率?
  Q?Q局部效率,指某个模?子模?函数的本w效率?
  Q?Q个达方?个h方便性,指个人编E习惯?
  2.只引用属于自q存贮I间?
  3.防止引用已经释放的内存空间?
  4.q程/函数中分配的内存Q在q程/函数退Z前要释放?
  5.q程/函数中申LQؓ打开文g而用的Q文件句柄,在过E?函数退出前要关闭?
  6.防止内存操作界?
  7.时刻注意表达式是否会上溢、下溢?
  8.认真处理E序所能遇到的各种出错情况?
  9.pȝq行之初Q要初始化有兛_量及q行环境Q防止未l初始化的变量被引用?
  10.pȝq行之初Q要对加载到pȝ中的数据q行一致性检查?
  11.严禁随意更改其它模块或系l的有关讄和配|?
  12.不能随意改变与其它模块的接口?
  13.充分了解pȝ的接口之后,再用系l提供的功能?
  14.要时L意易h的操作符。当~完E序后,应从头至检查一遍这些操作符?
  15.不用与g或操作系l关pd大的语句Q而用徏议的标准语句?
  16.Q用第三方提供的Y件开发工具包或控件时Q要注意以下几点Q?
  Q?Q充分了解应用接口、用环境及使用时注意事V?
  Q?Q不能过分相信其正确性?
  Q?Q除非必要,不要使用不熟悉的W三方工具包与控件?

十、代码编?
  1.~写代码时要注意随时保存Qƈ定期备䆾Q防止由于断c硬盘损坏等原因造成
   代码丢失?
  2.同一目l内Q最好用相同的~辑器,q用相同的讄选项?
  3.合理地设计Y件系l目录,方便开发h员用?
  4.打开~译器的所有告警开兛_E序q行~译?
  5.在同一目l或产品l中Q要l一~译开关选项?
  6.使用工具软gQ如Visual SourceSafeQ对代码版本q行l护?

十一、代码测试、维?
  1.单元试要求臛_辑ֈ语句覆盖?
  2.单元试开始要跟踪每一条语句,q观察数据流及变量的变化?
  3.清理、整理或优化后的代码要经q审查及试?
  4.代码版本升要经q严格测试?nbsp;



路边的石?java 2007-08-14 10:27 发表评论
]]>
使用Axis开发Web ServiceE序http://www.aygfsteel.com/romkk-shi/archive/2007/08/13/136281.html路边的石?java路边的石?javaMon, 13 Aug 2007 01:42:00 GMThttp://www.aygfsteel.com/romkk-shi/archive/2007/08/13/136281.htmlhttp://www.aygfsteel.com/romkk-shi/comments/136281.htmlhttp://www.aygfsteel.com/romkk-shi/archive/2007/08/13/136281.html#Feedback0http://www.aygfsteel.com/romkk-shi/comments/commentRss/136281.htmlhttp://www.aygfsteel.com/romkk-shi/services/trackbacks/136281.html 今天是感恩节Q差点又要在公司加班了。好在Web ServiceE序q不是特别难搞,下午l于在eclipse下调通过了,正确产生了服务器端和客户端的Java代码Qapache的东西的很不错?

  说道Web Service的程序开发八个月前我加班调试公司和中国电信的商务领航pȝ的接口的时候,用的是Web ServiceQWeb Service有很多优点,使用Web Service可以在不同编E语a间实现数据交换,而我那时对Web Service也不熟,q同事帮我生成了一大堆Web Service的框架代码,我则只单独开发业务代码?/p>

  q次的另外一个项目也要用Web Service了,不过人手也少了,没有人帮做Web Service了,只好自己动手?/p>

  好在开发前Q有个同事先l我们不熟悉Web Service的程序员q行了一些培训,我才知道原来以前的Web Service都是可以自动生成代码的,而且也不难,试了一个下午客L和服务器端的Web Service代码都调试通过了,真不错?/p>

  Z更多喜爱开发的E序员也能迅速了解Web Service的开发,我这里整理了一些通过Axis开发Web Service的一些要点,希望能让不熟悉Web Service的开发h员能够迅速掌握Web Service?/p>

  一、Axis环境的安?/strong>

  1、安装环?J2SE SDK 1.4QTomcat 5.0Qeclipse 3.2?/p>

  2、到 http://xml.apache.org |站下蝲Axis安装包?/p>

  3、将Axis相关包文件放在WEB-INF\lib目录下?/p>

  4、Axis可选的包:activation.jarQ?mail.jarQ?xmlsec-1.4.Beta1.jar拯到WEB-INF目录下,生成客户端时候需要用?/p>

  Axis支持三种web service的部|和开发,分别为:

  1、Dynamic Invocation Interface QDIIQ?/p>

  2、Dynamic Proxy方式

  3、Stubs方式

  前两U方式我׃介绍了,同事告诉我他们自己都不用前两种方式Q他们徏议我们用Stubs方式Q因此我׃要就介绍一下第三种方式。注意,我自qJava源代码是攑֜DQ\workspace\test\目录下,Axis相关包文件放在DQ\workspace\test\WEB-INF目录下?/p>

  二、编写wsdd发布web服务Q编写stub client讉Kweb服务

  1、编写服务端E序serverQSayHello.javaQ编译server.SayHello.java

package server;
public class SayHello
{
    public String getName(String name)
    {
        return "hello "+name;
    }
}

  2、编写wsdd文g

  deploy.wsdd文g内容如下Q?/p>

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <service name="SayHello" provider="java:RPC">
  <parameter name="className" value="server.SayHello.getName"/>
  <parameter name="allowedMethods" value="*"/>
 </service>
</deployment>

  3、发布服务:

  ~辑一个deploy.batQAxis_Lib为axis.jar路径。内容如下:

set Axis_Lib=D:\workspace\test\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=http://localhost:8080/test/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd

  执行q个批处理文Ӟq时候,如果提示成功的话Q访?a href="http://localhost:8080/test/services">http://localhost:8080/test/services ׃昄服务列表?/p>

  4、生成客Lclient stub文g

  在浏览器上访问服务器端的服务Q可以下载到WSDL文gQ通过Axis的相兛_P可以自动从WSDL文g中生成Web Service的客L代码?/p>

  ~写一个WSDL2Java.bat文gQ其内容如下Q?/p>

set Axis_Lib=D:\workspace\test\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\workspace\test\src
set Package=server.SayHello
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% SayHello.wsdl

  执行q个批处理文件就可以生成client stub.

  生成的stub client文g列表为:SayHello.javaQSayHelloService.javaQSayHelloServiceLocator.javaQSayHelloSoapBindingStub.java .

  5、编写客LE序Q编译ƈ执行

  下面是一Djunit试客户端代码?/p>

import java.net.URL;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class TestWSClient extends TestCase {

    public TestWSClient(String string) {
        super(string);
    }

    public void SayHelloClient() throws Exception {

        SayHelloService service = new SayHelloServiceLocator();
        SayHello_PortType client = service.getSayHello() ;
        String retValue = client.getName("clientname");
        System.out.println(retValue);

    }

    public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTest(new TestWSClient("SayHelloClient"));
        return suite;
    }
}

  xQ整个服务器端和客户端的Web Service框架代码完成了Q剩下的是在里面加入你的业务代码了Q怎么PWeb Serviceq不隑ּ发吧?/p>


]]>
վ֩ģ壺 ¬| IJ| »| | ƺ| | | ɽ| | Ҷ| | | | ͷ| | | »| ʷ| Ĵʡ| Ǭ| | | | | | | ɽʡ| Դ| | | ƽ| | ʯɽ| ƽң| »| ƽ| ʯɽ| ƽ| ޵| | |