仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 764|回复: 9
打印 上一主题 下一主题

[学习教程] JAVA网站制作之作者问答 C Java编码标准仓酷云

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。年夜多半开辟者都批准编写平安的代码的需要性,但常常由于项目公布的压力使他们保持了这一寻求。而另外一些开辟者大概仅仅是不晓得从那里入手下手动手。不管是哪一种情形,一篇现成的标准城市匡助他们改良这类善。
InfoQ有幸与《JavaCodingGuidelines》的作者们举行了一次对话,更多地懂得了他们的旧书是怎样匡助开辟者们编写更好的代码,而且使他们有一份优异的标准能够作为参考。
InfoQ:年夜多半开辟者都但愿可以改良他们的代码质量,进步代码平安性,但大概他们还不晓得从那里动手。另有的开辟者以为这一点从实际下去说固然十分好,可是他们正在一个遗留体系的代码库中挣扎而力所不及。在这些分歧的情形下,你会对这些开辟者们说些甚么呢?
你对这本书的利用体例很年夜水平上取决于你今朝的事情。假如你正处于一个Java软件开辟流程的入手下手阶段,你大概会盘算通读一篇全书,以懂得个中的标准的要旨。当体系开辟的历程入手下手后,当你关于某些标准的使用存有疑问时,你就会回过火往从头审阅这些标准。
另外一方面,假如你正在保护一个现有体系,那也许只要你碰到了某些“奇异的”成绩的时分,你才会想起往从头读一篇某些标准,反省代码中是不是存在某些成绩,再对比标准举行反省。这是一种弥补式的战略。
InfoQ:看一下本书就会发明,本书的内容分为平安、进攻性编程、牢靠性、编程可了解性和程序员的罕见曲解。在这些内容当中,你以为哪一部分是在编程中最必要注重的呢?
《JavaCodingGuidelines》的次要方针是当开辟者对怎样准确地使用某些编程观点、构件或言语特征有些不断定的时分,匡助他们做出明智的选择。程序员的曲解这一部分次要办理的成绩是“最多见的曲解有哪些?”编程可了解性这部分关于怎样确保代码不存在歧义、易于保护这一点做了深切的解说。而平安、进攻性编程和牢靠性章节慢慢为读者先容了创立强健的体系,让它们可以从打击或停机中当即恢复所需的常识。
InfoQ:你的这本书和《TheCERTOracleSecureCodingStandardforJava》一书是不是有甚么干系呢?读者们是不是应当先浏览你的标准再往浏览那本书,或是两本书能够一同读呢?
《TheCERTOracleSecureCodingStandardforJava》一书为Java的平安编码界说了一些划定规矩,假如你违反了这些划定规矩,就有大概招致发生被人使用的缺点。《JavaCodingGuidelines》则保举了一些改良软件平安性和牢靠性的一样平常性作法,而即便违反了个中的某些倡议,也其实不代表你的代码中就今生产了缺点。这两本书最好是可以共同利用,它们供应了各自自力的一些引导标准,并且这两本书中的内容反复很少,乃至几近没有。多半的标准都供应了一些应该遵守的通用编码准绳,而编码尺度则枚举了各类应该制止的毛病。《JavaCodingGuidelines》也援用了《TheCERTOracleSecureCodingStandardforJava》中的内容,但它的全体仍然是自力的。
InfoQ:主动举行代码扫描的工具可以在多年夜水平上检测出这类毛病呢?有了主动化工具,是不是就代表程序员不用往熟习这些观点了呢?
程序员应当熟习《JavaCodingGuidelines》中的各类观点,由于在开辟阶段更简单制止在代码中发生缺点和缺点,而假如在测试阶段,大概更糟的是在部署阶段,要找到并改正这些成绩就要可贵多了。年夜多半现有的剖析工具其实不健全,而且也不完整,这意味着这些剖析发生的了局有大概包括毛病否认大概毛病一定。开辟者必需可以判别工具的诊断结论是不是代表着违反了某个准绳,而且还要可以制止或打消在诊断结论中没有枚举出的违反情形。CERT创立了源代码剖析实行室(SCALe)工具,它利用了多种静态剖析体例对代码举行评价,以找出对平安编码划定规矩的违反情形。很多相似如许的工具都具有不反复的功效,因而必要利用多种工具以取得更年夜的查验掩盖水平。但SCALe历程只要部分是主动化的,对诊断了局必需举行野生剖析,以打消毛病一定的结论。
InfoQ:你是不是注重到有些团队会专门推荐出一名“平安专家”?岂非不该该是全部团队都往熟习这些平安性的内容吗?
假如全部团队都可以了解平安编码的观点,那效果会好很多。每一个写代码的人都必要懂得怎样平安地编写代码,由于编写代码的时分也是调剂你的代码的最好机会。假如团队中的某位成员受过更多平安性方面的培训,那他能够经由过程代码检察和平安性审计的体例将这些常识无效地推行给全部团队。开辟团队必需答应他们会编写出遵守标准的代码,他们能够将本书作为参考。开辟者能够列入或存眷我们在www.securecoding.cert.org网站所订制的编码尺度,并经由过程newsletter大概是Linked上的平安编码论坛(SecureCodingForum)举行会商。
InfoQ:你是不是注重到有哪些毛病是开辟者会反复呈现的吗?
[quote]某些毛病会常常性地呈现在Java中,那是由于这门言语在怎样使用各类编程构件方面供应了很年夜的自在度。举例来讲,平安编码划定规矩中的ERR-08-JDonotcatchNullPointerExceptionoranyofitsancestors(不要捕捉NullPointerException非常或它的任何父类)就常常被违反,由于有些开辟者无视了Java所供应的非常处置特征。在代码中捕捉大概抛出一个过于泛用的范例常常会招致毛病被疏忽的了局。非常处置一直都是一个应战,由于很多Java使用和web框架将处置非常和失利情况的义务都丢给了开辟者。
CERT为各类Java的软件体系对《TheCERTOracleSecureCodingStandardforJava》的恪守情形做了一些剖析,在我们的纪录中,最简单被违反的划定规矩有这几条:
A.EXP01-J.Neverdereferencenullpointers(永久不要直接援用空指针)
B.ERR01-J.Donotallowexceptionstoexposesensitiveinformation(不要让非常表露敏感信息)
C.ERR07-J.DonotthrowRuntimeException,Exception,orThrowable(不要抛出RuntimeException、Exception、或Throwable范例的非常)
D.ERR08-J.DonotcatchNullPointerExceptionoranyofitsancestors(不要捕捉NullPointerException非常或它的任何父类)
E.FIO04-J.Releaseresourceswhentheyarenolongerneeded(当不再必要某个资本的时分当即开释它)
F.ERR00-J.Donotsuppressorignorecheckedexceptions(不要克制或疏忽查到的非常)

多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。
山那边是海 该用户已被删除
沙发
发表于 2015-1-19 20:07:13 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-20 17:48:47 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
地板
发表于 2015-1-28 10:33:25 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
小女巫 该用户已被删除
5#
发表于 2015-1-31 12:52:34 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
不帅 该用户已被删除
6#
发表于 2015-2-2 21:38:37 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
柔情似水 该用户已被删除
7#
发表于 2015-2-6 01:46:31 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
深爱那片海 该用户已被删除
8#
发表于 2015-2-9 13:28:20 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
精灵巫婆 该用户已被删除
9#
发表于 2015-2-27 06:37:06 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
谁可相欹 该用户已被删除
10#
发表于 2015-3-13 06:09:24 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-10 14:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表