com.android.apidemo什么意思?
Google公司提供的android代码示例。
这是命名规范,(一般)以公司域名返回来作为前缀,加上应用名称。
android系统中,以包名区分不同应用,如果Google开发的应用命名为apidemo,
其他公司也开发了一个app叫做apidemo,那这两个应用不能同时装在android手机中,
虽然一家公司可以将其应用的包名改为其他的,比如apidemoxx,或者abc.apidemo,
但是这样其他公司也有可能这样做,这样就会很乱,所以规范(约定)就制定出来了,
各家公司以公司域名(反过来)加应用名作为应用的包名,这样大家都遵守规范,就不会冲突了。
说的应该不完全对,但是差不多就那个意思,主要为了包名不冲突。
如何优雅地为程序中的变量和函数命名
简言之,根据语意来选择词汇,别无它法……然而,有时我们会不知用什么词汇更合适。
当你想到某个抽象的东西,你更倾向于最先想到的词语,除非你故意不这样,这些词也会抢着出现,直到模糊或改变你的想法。
当你想到一个具体的对象,你觉得词穷,然后你想描述的已经看到了,然后你继续寻找更适合它的词。
哈哈,命名竟成了编程中最难的事~
Martin Fowler曾经在一篇文章中曾经引用过Phil Karlton的话:
There are only two hard things in Computer Science: cache invalidation
and naming things.
他说这句话在很长的一段时间内都是他最喜欢的话。可见命名对于广大的程序员来说的确是个大问题。
对于我们中国人来说,问题可能出在两个方面:
– 自打学编程开始就没被教育过要重视命名。
这可以在谭浩强的《C语言入门》一书中可见一斑。《C语言入门》可以说是很多程序员在大学时学习的第一门编程语言使用的教材。而本书通篇都是各种
a,b,c,x,y,z 的命名方式。这种poor naming的方式被广大程序员纷纷效仿,导致如今在很多项目代码中随处可见。
– 命名需要一定的英文功底,而国内程序员的英文水平参差不齐。
很多程序员被教育后开始逐渐重视命名,但是受限于英文水平,不知道使用什么合适的英文词汇来命名。有的甚至直接把中文直译为英文的方式命名,或者直接用拼音来命名,反而得不偿失。
命名的重要性我想不需要过于强调。如今的软件开发早已不是求伯君那种单匹马的时代。你写下的每一行代码都会在不久的以后被团队的其他人甚至你自己多次查看。如果是个开源项目,那么更会被全球各地的人查看源代码。所以代码的可读性就变得尤为重要。如果读者能够轻松读出你的代码的意图,那么就说明你的命名功底相当扎实。
比如在一个管理系统中,你使用这样的代码: a = b * c
很容易让人摸不着头脑,虽然程序能够正常运作,但恐怕没人敢轻易修改这行他们不了解的代码。而如果修改成为这样: weeklypay =
hours_worked * pay_rate; 那恐怕极少有人不懂这行代码的意图。
糟糕的命名也会导致大量无谓的注释,这是一个很容易跳进去的陷阱。下一段代码怕别人不明白你的意图,那么就加上注释。这貌似是一个很精妙的想法,实际上却南辕北辙。比如以下的注释:
int d; // elapsed time in days
貌似很容易让人读懂,但是问题还是很多。首先注释不能跟着所有的引用,在定义处了解了d的含义,继续往下看的话却很容易忘记;其次代码更新了,很可能会忘记修改注释,反而给把读者带入歧途。
与其用这样的注释,还不如直接重命名: int elapsedTimeInDays; 这样清晰易懂,还不用维护注释,何乐而不为?
那么如何着手来提高的自己的命名技巧那?
首先寻找一份公认的代码规范,并严格按照这样的标准执行。比如google开源了自己内部使用的语言编码规范,我们可以直接拿来使用。比如请看Google
Java的style guide,相当详实。除此之外还有C++等。这里收集了Google对各种语言的编码规范,非常具有参考价值。
标准的代码规范中的每一条都是有胜出的理由,值得我们遵从。但某些命名问题不一定只有一种最好的解决方式,这就需要团队自己建立起约定。比如对于Java单元测试类的命名方式,不同的团队可能不一样。比如有的团队喜欢以should开头,有的喜欢test开头,有的喜欢骆驼命名法,有些喜欢下划线命名法,每种方式有各自的利弊,没有一种能完全脱颖而出,所以需要团队自行制定。一旦确定使用某一种,那么一定要保持一致。
某些命名规范其实是可以进行自动化检查的,比如在Java应用的构建过程中可以引用checkStyle这款插件,对命名进行一些基本的检查,比如方法名、变量名是否遵循了一定模式等。这样在一定程度上可以强制大家遵守某些约定。自己以前曾经写过一篇文章,请参见这里。
最后要在团队中建立起code review的机制,通过code
review来相互监督纠正命名问题,并且这样更容易达成一致的命名约定,方便协作开发。code
review可以采取非正式会议评审的方式。最简单的方式就是每天找个固定时间大家一起聚在一个显示器前review每个人的代码,现场提出问题,当事人记录下来会后更改。这种方式非常高效。另外有的团队在嵌入代码时可能会引入一些代码评审机制,比如pull
request, cherry pick等。这种review方式比较重量级,反馈周期也较长,好处是可以保证最终迁入的代码是没有问题的。
很多语言和框架为了更加可读,都把命名玩出花来了。比如JavaScript生态圈中重要的单元测试工具Jasmine把测试函数以it命名,这样可以与参数连接起来成为一种表意的自然语言:
如何优雅地为程序中的变量和函数命名?
- 不同的代码段采用不同的命名长度。通常来说,循环计数器(loop
counters)采用1位的单字符来命名,循环判断变量(condition/loop
variables)采用1个单词来命名,方法采用1-2个单词命名,类采用2-3个单词命名,全局变量采用3-4个单词命名。
- 对变量采用具体的命名(specific names)方式,”value”, “equals”,
“data”在任何情况下都不是一种有效的命名方式。
- 采用有意义的命名(meaningful names)。变量的名字必须准确反映它的含义和内容。
- 不要用 o_, obj_, m_ 等前缀命名。变量不需要前缀标签来表示自己是一个变量。
- 遵循公司的变量命名规则,在项目中坚持使用同一种变量命名方式。例如txtUserName, lblUserName,
cmbSchoolType等,否则会对可读性造成影响,而且会令查找/替换工具(find/replace tools)不可用。
- 遵循当前语言的变量命名规则,不要不统一(inconsistently)地使用大/小写字母。例如:userName, UserName,
USER_NAME, m_userName, username, …。
以Java为例:
* 类名使用驼峰命名法(Camel Case):VelocityResponseWriter
* 包名使用小写:com.company.project.ui
* 变量使用首字母小写的驼峰命名法(Mixed Case):studentName
* 常量使用大写:MAX_PARAMETER_COUNT = 100
* 枚举类(enum class)采用驼峰命名法,枚举值(enum values)采用大写。
* 除了常量和枚举值以外,不要使用下划线’_’
- 在同一个类不同的场景(contexts)中不要复用变量名。例如在方法、初始化方法和类中。这样做可以提高可读性和可维护性。
- 不要对不同使用目的的变量使用同一个变量名,而是赋予它们不同的名字。这同样对保持可读性和可维护性很重要。
- 变量名不要使用非ASCII字符(non-ASCII chars)。这样做可能会在跨平台使用时产生问题。
-
不要使用过长的变量名(例如50个字符)。过长的变量名会导致代码丑陋(ugly)和难以阅读(hard-to-read),还可能因为字符限制在某些编译器上存在兼容性问题。
- 仅使用一种自然语言(natural language)来命名变量。例如,同时使用德语和英语来命名变量会导致(理解)不一致和降低可读性。
- 使用有意义的方法名。方法名必须准确表达该方法的行为,在多数情况下以动词(verb)开头。(例如:createPasswordHash)
- 遵循公司的方法命名规则,在项目中坚持使用同一种方法命名方式。例如 getTxtUserName(), getLblUserName(),
isStudentApproved(),否则会对可读性造成影响,而且会令查找/替换工具不可用。
- 遵循当前语言的变量命名规则,不要不统一地使用大/小写字母。例如:getUserName, GetUserName, getusername,
…。
以Java为例:
* 方法使用首字母小写的驼峰命名法:getStudentSchoolType
* 方法参数使用首字母小写的驼峰命名法:setSchoolName(String schoolName)
- 使用有意义的方法参数命名,这样做可以在没有文档的情况下尽量做到“自解释(documentate itself)”
总之,命名问题只是整个编码规范中的一小部分,但是起的作用举足轻重,它是判断一个程序员是否专业的必要标准。
为什么谷歌要执行严格的代码编写规范
我们在谷歌所做事情中另外一个让我感到异常有效、有用的制度是严格的编码规范。在到Google工作之前,我一直认为编码规范没有什么用处。我坚信这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率的东西。我是大错特错了。在谷歌,我可以查看任何的代码,进入所有谷歌的代码库,我有权查看它们。事实上,这种权限是很少人能拥有的。但是,让我感到惊讶的却是,如此多的编码规范—缩进,命名,文件结构,注释风格—这一切让我出乎意料的轻松的阅读任意一段代码,并轻易的看懂它们。这让我震惊—因为我以为这些规范是微不足道的东西。它们不可能有这么大的作用—但它们却起到了这么大的作用。当你发现只通过看程序的基本语法结构就能读懂一段代码,这种时间上的节省不能不让人震撼!反对编码规范的人很多,下面是一些常见的理由,对于这些理由,我以前是深信不疑。这是浪费时间!我是一个优秀的程序员,我不愿意浪费时间干这些愚蠢的事。我的技术很好,我可以写出清晰的、易于理解的代码。为什么我要浪费时间遵守这些愚蠢的规范?答案是:统一是有价值的。就像我前面说的—你看到的任何的一行代码—不论是由你写的,还是由你身边的同事,还是由一个跟你相差11个时区的距离人写的—它们都有统一的结构,相同的命名规范—这带来的效果是巨大的。你只需要花这么少的功夫就能看懂一个你不熟悉(或完全未见过)的程序,因为你一见它们就会觉得面熟。我是个艺术家!这种话很滑稽,但它反映了一种常见的抱怨。我们程序员对于自己的编码风格通常怀有很高的自负。我写出的的代码的确能反映出我的一些特质,它是我思考的一种体现。它是我的技能和创造力的印证。如果你强迫我遵守什么愚蠢的规范,这是在打压我的创造力。可问题是,你的风格里的重要的部分,它对你的思想和创造力的体现,并不是藏身于这些微不足道的句法形式里。(如果是的话,那么,你是一个相当糟糕的程序员。)规范事实上可以让人们可以更容易的看出你的创造力—因为他们看明白了你的作品,人们对你的认识不会因不熟悉的编码形式而受到干扰。所有人都能穿的鞋不会合任何人的脚!如果你使用的编码规范并不是为你的项目专门设计的,它对你的项目也许并不是最佳方案。这没事。同样,这只是语法:非最优并不表示是不好。对你的项目来说它不是最理想的,但并不能表明它不值得遵守。不错,对于你的项目,你并没有从中获得该有的好处,但对于一个大型公司来说,它带来的好处是巨大的。除此之外,专门针对某个项目制定编码规范一般效果会更好。一个项目拥有自己的编码风格无可厚非。但是,根据我的经验,在一个大型公司里,你最好有一个统一的编码规范,特定项目可以扩展自己特定的项目方言和结构。我善长制定编码规范!这应该是最常见的抱怨类型了。它是其它几种反对声音的混合体,但它却有自身态度的直接表现。有一部分反对者深信,他们是比制定编码规范的人更好的程序员,俯身屈从这些小学生制定的规范,将会降低代码的质量。对于此,客气点说,就是胡扯。纯属傲慢自大,荒唐可笑。事实上他们的意思就是,没有人配得上给他们制定规范,对他们的代码的任何改动都是一种破坏。如果参照任何一种合理的编码规范,你都不能写出合格的代码,那只能说你是个烂程序员。当你按照某种编码规范进行编程时,必然会有某些地方让你摇头不爽。肯定会在某些地方你的编码风格会优于这些规范。但是,这不重要。在某些地方,编码规范也有优于你的编程风格的时候。但是,这也不重要。只要这规范不是完全的不可理喻,在程序的可理解性上得到的好处会大大的补偿你的损失。但是,如果编码规范真的是完全不可理喻呢?如果是这样,那就麻烦了:你被糟蹋了。但这并不是因为这荒谬的编码规范。这是因为你在跟一群蠢货一起工作。想通过把编码规范制定的足够荒谬来阻止一个优秀的程序员写出优秀的代码,这需要努力。这需要一个执著的、冷静的、进了水的大脑。如果这群蠢货能强行颁布不可用的编码规范,那他们就能干出其它很多傻事情。如果你为这群蠢货干活,你的确被糟蹋了—不论你干什么、有没有规范。(我并不是说罕有公司被一群蠢货管理;事实很不幸,我们这个世界从来就不缺蠢货,而且很多蠢货都拥有自己的公司。
标签的创建及使用规范有哪些?
一、标签作用定位兴趣,连接人和问题,组织关联度较强的内容。二、创建原则标签能明确关联到与标签名相关领域的内容。 因为标签公用、且由公众维护的,所以,请务必遵守下列规范,违反规范者,将面临取消「标签编辑权限」的风险。三、命名规范1.字符、标点规范命名标签应使用简体字。如:创建与历史相关的标签时,应使用「历史」,而不是「歷史」。全角字符间不使用空格,半角字符(如英文、中英文之间、中文和数字)之间应使用空格。如:创建与物种鉴定相关的标签时,应使用「物种鉴定」,而非「物种鉴定」,后者将被系统自动识别为不规范标签,进而删除。「2012年」、「Google Docs」为合格标签当标签中含有中文及英文补充描述时,补充的描述应放在圆括号中,且英文第一个字母需大写。如「协同进化(Coevolution)」、「推特(Twitter)、「电子邮件(Email)」。例外情况以标准用法为准,如「iPhone」2.填写完整的信息当标签为常用简写,且意义明确时,建议填写完整信息。如:「流感」,创建标签时,应填写「流行性感冒」,当用户搜索“流感”时,仍然能快速定位到「流行性感冒]当标签为行业常用简写用语时,建议填写完整信息,常用简写用语填写在圆括号中。如:「IM」,创建标签时,应填写「即时通讯(IM)」3.创建有歧义的标签名时,应对标签作相应补充说明有歧义的简写,需填写完整的描述。如:创建「PM」时,应创建包含完整信息的标签,如果是产品经理,应为「产品经理(Product Manager)」,如果指项目经理,应为「项目经理(Project Manager)」当提交的标签除原有含义外,同时是某个公司的名称或其品牌,默认含义以原有含义为准,指代品牌或公司时,需填写完整说明。如:苹果。创建「苹果」标签时,默认指水果。如果是苹果公司,应为「苹果(公司)」。当提交的标签为多义词时,需用圆括号对标签做补充说明。如:「源代码」,「源代码(电影)」创建「作常用单位使用的人物标签」时,默认该标签为人物,而非单位。如:「安培」、「牛顿」只代表人物。4.常用用法与标准用法不统一时,原则上以标准用法为准植物的俗名与学名不同时,尽量使用学名。如:俗名「土豆」,学名应该是「马铃薯」新生词汇以第一次出现为准,若有改动,以国家标准为准。如:「非典」,第一次出现时为「非典型肺炎」,后经改动,标准用法为「SARS」无中文译名的词汇统一使用拉丁文。英文名词的中文译名,以常用用法为准。如:地名:「Amazon」常见译法为「亚马逊」,标准译为「亚马孙」。人名:Shane Battier,通用译法为「肖恩·巴蒂尔」,标准译法应为「谢恩·巴蒂埃」;常见不规范用法,以标准用法为准。如:「直升飞机」为常用用法,标准用法为「直升机」。5.城市命名直辖市、国际大都市,采用常用名命名。如:「北京市」,应为「北京」;「重庆市」,应为「重庆」;「东京市」应为「东京」。防止地区指代不清楚,需圆括号对地名作补充说明。如:「吉林」需区分「吉林(省)」和「吉林(市)」;6.用语保持中立,标签中禁止包含偏向性立场的用语涉及隐私、争议、灾难性话题及尚无确定结果的标签,用语当严格保持中立。如:「水门丑闻」应当为「水门事件」,「9·11灾难」应当为「9·11事件」,「5·12国难」应当为「5·12地震」涉及心理疾病等相关的标签,禁止使用歧视性用语。如:不宜创建「心理变态」类标签,「变态心理学」可行。这类标签命名以学术界公认的心理或精神病命名为准,类似于「精神分裂」、「人格分裂」等。与残疾人相关的标签,以国家标准用法为准。如:禁止使用「聋子」「哑巴」等不规范且有歧视含义的标签。建议使用「聋哑人」等通用标签。四、使用规范原则上,每个问题添加2-5个标签为宜。且标签与问题主干能直接关联。
麻烦采纳,谢谢!
哪位大侠可以给我讲下google那个图片的原理
这个很简单,我告诉你正解
这里面用到的技术:ajax,div层的概念,javascript的第三方库
div层的概念:类似于一个容器,能够容纳图片等。用代码来解释就是:“div这里存放图片/div”
略缩图和大图:图像可以用代码来控制显示的大小,所以你能够看到小图和大图
当你点击略缩图示,你最先看到一块白色区域,中间的地方有个加载等待图案,这里面用到了ajax技术,同时用到了div层的概念(稍候解释)。当ajax接收到了图片加载完毕的信息后,会告知浏览器,可以显示图片了。
第二步,图片显示在白色区域中。
为什么有些时候白色区域会变小?
因为这里又用到了第三方的js函数库,他的作用的过渡效果,即div层的移动。所以你会看到白色区域慢慢的向图片边缘靠拢。
问什么你点击不到其他地方?
用技术的角度来解释,就是在你第一次点击小图的时候,他已经自动创建的一个透明的div层在上面,所以你点不到他
这就类似于你在桌子上放一幅画,而在画的上面放上玻璃板,当你用笔去往上写东西的时候,当然不会写到画上面。
我说,大哥,你明白了吗?我解释的不容易啊,给分吧
********************************************
我是搞web开发的,如果用我们的专业术语来给你解释,你能明白吗?你有什么依据来证实你说的是对的?代码的编译原理,程序执行的先后顺序,我能够用我的经验判断出来。如果你想真正弄清楚这是怎么一回事,我希望你看看javascript和html基本语法知识(特别是div的用法,设置他的style的z-index属性和filter属性,然后就是js的基本语法和dom规范),然后再来提问。这样效果会好一些,前提是你愿意在这上面花费一些时间
*********************************************
页面确实有flash控件,但只有一个地方用到了,而图片显示的时候没有用到。共两个文件如下(webroot代表应用根目录)
名称:flash_ad_relay.swf
目录:webroot/comic/flasher/ads_data/
名称:imgad.swf
目录:webroot/comic/flasher/ads_data/
说明:通过观察ads.htm(目录在webroot/comic/flasher/)文件代码,能够判断,flash_ad_relay.swf应该是google提供的一个flash控件,其作用是控制广告程序的加载进度。而imgad.swf则是一个广告(ad)程序,当当网的那个,在页面最下面。
总体来说flash_ad_relay.swf用来控制imgad.swf文件加载的进度并且显示。
入口方法:tianchaoyu.html文件中script type="text/javascript" src=""
/script
此行代码用来加载flash广告程序,这应该是遵循了google的命名规范和目录结构。
上面这个是我个人推测的,但只有这一个地方用到flash文件,图片显示完全没有用到。
**********************************************
lightbox.css文件
目录:
说明:#outerImageContainer{
position: relative;
background-color: #fff;
width: 250px;
height: 250px;
margin: 0 auto;
}
上面为lightbox.css代码片断,width: 250px;height: 250px;控制了图片第一次点击的时候初始化大小为250像素*250像素 在17寸1024*768分辨率上。加载的过程中用到了loading.gif图片(),你可能是因为这个原因把它理解成flash吧。这只是一张gif图而已。
当点击图片,图片数据传输完毕之后,能够获得图片的宽高属性,根据这些属性,那个div层(divimg //div)会自动扩大或缩小,以适应新的图片。这就是你看到的过渡效果。
处理放大缩小过渡效果的文件是lightbox.js,而effects.js也有一些坐标变化的处理。
lightbox.js是一个简单实用的用来把图片覆盖在当前页面上的脚本. 它能被快速安装并且运作于所有流行的浏览器.。这个网站上用的是2.02版本,它是由Lokesh Dhakar人于20060331日创建的,可以通过察看相关信息。
最后介绍使用方法,非常easy
**********************************************
先说一下其他两个js框架
prototype.js
它是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。
像前面提到的lightbox.js和后面要说的effects.js是基于prototype.js实现的,他们通常结合使用。
scriptaculous.js和effects.js
这是个动画效果库。
scriptaculous 包含以下几个部分:
builder.js :提供了一种方便的建立html元素的方法
controls.js :包含自动提示和动态编辑两个控件
dragdrop.js : 提供元素拖放的功能
effects.js : 设计优良的ajax效果库,这篇文章要讲的就是这个
slider.js : 一个滑动条控件
effects.js中提供了两种类型的动画效果,一种称为核心效果(core effect),一种称为组合效果(combination effect)
**********************************************
结合使用
第一步
Lightbox v2.0 使用 Prototype 框架和 Scriptaculous 效果库. 你将需要外调这三个 Javascript 文件在你的 header.
代码:
script type="text/javascript" src="js/prototype.js"/script
script type="text/javascript" src="js/scriptaculous.js?load=effects"/script
script type="text/javascript" src="js/lightbox.js"/script
第二步
外调 Lightbox CSS 文件 (或添加 Lightbox 样式到你现行的样式表中).
link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /
第三步
检查 CSS 并确定调用的 prev.gif 和 next.gif 文件在正确的位置. 同样要确定调用的 loading.gif 和 close.gif 文件及 lightbox.js 文件在正确的位置.
方式一:添加 rel="lightbox" 属性到任何一个链接标签去激活lightbox. 例如:
a href="images/image-1.jpg" rel="lightbox" title="my caption"image #1/a
方式二:如果你有一套你想分组的相关图片, 接着上一部并且又在 rel 属性中添加一个带方括号的组名. 例如:
a href="images/image-1.jpg" rel="lightbox[roadtrip]"image #1/a
a href="images/image-2.jpg" rel="lightbox[roadtrip]"image #2/a
a href="images/image-3.jpg" rel="lightbox[roadtrip]"image #3/a
********************************************
********************************************
基本上就是这么用,我都写的快吐血了
要是还有不明白的,提出来,需要详细代码的话,我可以给你做一个demo
lightbox下载地址:
prototype.js下载地址(你只需要下在lightbox就可以了,里面包含着个文件了):
关于google命名规范和谷歌命名规范的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。有需要独享得id可以点击下方广告链接进入。独享一人一号。