企业网站建设

建站知识

今日已发布信息: 414598
累计注册用户: 77994095

十大要素帮你理清营销型搜索排名高低的秘密

营销型网站 关键词排名 搜索引擎 优化百度排名

概述: 那么上升要么下降,关于如何才能够符合搜索引擎的算法,需要大家多去看一些站长权威论坛的通告,比如百度官方站长论坛,从中可以发现百度对于优质网站的评价标准,从中找到一些有价值的信息。   2.网站的结构或者模块一旦发生改变,在短时间可能不会有什么影响,关键词排名也不会大的改变,这种情况只要百度搜索引擎更新之后关键词优化就一定会下降,甚至会K站。因此造成关键词优化百度排名一定程度的下滑。因此,建议大家在非必要的情况下,最好不要改动网站的结构,即使改动也应该做好应对措施,将损失降到最低。

  对于企业老板而言,在营销型网站建设好之后,最关心的问题莫过于网站的流量问题,如何获得流量?想要获得流量,常见的饿两种方法:付费推广和关键词排名。付费推广在这里就不多谈了,今天小编就来说说营销型网站关键词排名的问题,看看影响网站关键词排名的因素都有哪些?找到这些因素,做好排名,网站的自然流量也就刷刷的来了。

  其实,要说影响网站排名高低的因素是非常多的,和搜索引擎打交道,必须要研究搜索引擎的搜索原则以及排名规则,只有在这个规则中优化网站,关键词的排名才能够有机会排上去,那么如何分析优化的规则呢?小编认为至少可以从十个方面来分析:

  1.是否符合搜索引擎算法调整,搜索引擎的算法隔一段时间就会做出调整,也就是站长们所谓的大更新,更新的时候如果你的网站更加适合百度的算法规则,那么关键词优化百度排名就大 幅度提高,反之就会下降。这是必然的两种结果,那么上升要么下降,关于如何才能够符合搜索引擎的算法,需要大家多去看一些站长权威论坛的通告,比如百度官方站长论坛,从中可以发现百度对于优质网站的评价标准,从中找到一些有价值的信息。

  2.网站的结构或者模块一旦发生改变,在短时间可能不会有什么影响,关键词排名也不会大的改变,这种情况只要百度搜索引擎更新之后关键词优化就一定会下降,甚至会K站。因此造成关键词优化百度排名一定程度的下滑。因此,建议大家在非必要的情况下,最好不要改动网站的结构,即使改动也应该做好应对措施,将损失降到最低。

 

  天津模板建站  郑州   今日推荐免费建站   分类信息   邢台网站建设公司

 

  3.影响营销型网站排名的因素还有网站内容的更新频率,更新高质量的原创内容是必要的,这样更加能够增加网站和搜索引擎之间的信赖感,辅以适当的外链吸引搜索引擎蜘蛛的爬行,让高质量内容被收录,增加网站的排名能力。

  5.影响营销型网站关键词排名的另外一个因素是外链的质量,俗话说“内容为皇,外链为王”,在互联网中,链接是信息传播的最有效最高效的方法,而网站的权重值受到投票方式的影响,如果一个网站中存在你的网站的链接,那么就算是给你投了一票,能够给你投票的网站质量度越高搜索引擎给你的权重值也会更高,所以尽量去找一些高质量的平台来发布外链。

  6.添加高质量的友情链接对于营销型网站排名也是有帮助的,因此,推广人员应该尽可能的利用自己的资源来交换或者购买高质量友链,平时也要隔山差五的对交换的友情链接的情况进行检查,如有被降权或被K 的站应该及时撤除,一般网站出站链接的数量应该控制在30个以内。

  7.更改网站meta标签,也就是三大标签(title、keywords、description),在搜索引擎算法更新的时候会造成关键词优化百度排名大幅度的变化,因此,小编建议不要擅自更改网站的三大标签。

  8.影响营销型网站关键词排名的因素包括空间服务是否能够稳定运行,网站建设经常处于打不开或打开非常慢的状态对于搜索引擎蜘蛛的索引爬行来说会受到很大的影响。

  9.靠作弊的网站是不能够得到长期稳定的高排名的,比如站内关键词堆砌,大量的flash存在、弹窗存在,js存在、一方面不利于用户体验,另外一方面不利于搜索引擎的优化。

  10.没有选对正确的关键词也是关键词排名上不去的因素,企业一定要选择合适的关键词,有能力、有资源优化的关键词,比如卖折叠梯的企业,如果把关键词定为“梯子”这样的泛关键词,优化起来不仅耗费时间,浪费资源,还和自己的核心业务“折叠梯”不相干,无法第一时间获得精准的客户,失去了商机。

  影响营销型网站排名的因素其实都是一些细节,只要把这些优化细节做好了,做到位了,始终站在用户的角度来进行调整优化,这样的网站搜索引擎不会轻易忽视,能够得到高权重高排名也是理所当然的了。

 

挂牌新三板的美容第一股 ISpa怎样同时征服王思聪和资本市场

  在“颜值经济”的时代,美容业似乎已经成了最赚钱的行业。截止2015年底,北京有超过9000家美容按摩店,从业人数超过20万人,可谓盛况空前。但烈火烹油的现状并没有带来产业化和标准化,美容按摩行业仍处在野蛮生长的阶段。

  

 

  作为劳动密集型产业,于上世纪90年代成立的美丽田园、思妍丽、华夏良子等企业,尽管积累了大量会员,但由于不愿为员工缴纳社会保险增加人力成本、股权不清晰等原因,上市之路遥遥无期。成立仅11年,就吸引“国民老公”王思聪成为其客户的ISpa竟然一举挂牌新三板。它是怎么做到的呢?

  规范化管理,提高员工待遇

  靠上市来融资是张志奇早就设想好的。“我尽量不拿创投机构的钱,他们要求董事会席位,并且签署无限连带责任担保,这种资金的成本太高了。”张志奇坦言,“而挂牌最大的好处是公司有市值,这时候让员工持股才是有意义的。”

  既然打定主意上市,张志奇就解决了财务透明化和标准管理两大问题。

  “一些美容公司没有处理好会员卡的问题,算做收入还是负债,具体期限都说不清楚,这挡住了他们上市的道路。”张志奇说,“我们是唯一一家会员卡在商务部注册备案的公司。”

  同时,在为员工缴纳社会保险等工作上,ISpa也做到了透明管理。公开转让说明书显示,目前ISpa共有367名员工,公司为其中的311名缴纳了社会保险,56名员工自愿放弃缴纳,并签署了相关承诺书。

  在员工待遇的问题上,张志奇的商业逻辑和海底捞如出一辙:没有满意的员工就不会有满意的客人。在ISpa最普通的技师月薪都在7千左右,顶级技师月收入超过1万,并且提供员工宿舍。

  入驻五星级酒店的成本反而低于开设独立店面

  公开资料显示,2015年ISpa全年营收7263万元,其中净利润近900万元。超过12%的净利率得益于它选中了五星级酒店这个合作伙伴。

  目前,ISpa的主营业务分为到店服务和到家服务两种模式,其中到店服务贡献了绝大部分的收入。全国共有27家分店,分布在北京、上海、广州等12个一二线城市的高端酒店里。张志奇说:“有些Spa店在黄金地段最醒目的位置,但我们就在57层酒店里藏着。”

  他盈利模式足够清晰:以进驻五星级酒店的形式开设店铺,省去独立开店高昂的租金和装修成本,同时也能为其带来一部分住店客人。目前,公司已与希尔顿、凯悦、洲际、万豪等五星级酒店的高端品牌开展合作。

  “我们能活到现在,很大的因素就是(与酒店合作)能够省下装修的钱。”张志奇在接受采访时坦言,“Spa对上下水要求很高,洗手间、淋雨都需要。去外面建一个,看着可能漂亮,但常用的上下水设施是坏的。在这个方面,酒店的优势同样非常明显。”

  对于酒店来说,这样的引进除了可以收取租金和管理费之外,也是对品牌的加持。“(ISpa)会成为酒店的配套基础设施。没有口碑的按摩店即便开在酒店,也是开一个死一个。”张志奇说。

  精准开发客户,获得酒店青睐

  很少能看到ISpa打广告,但它却悄无声息地进驻了将近30家五星级酒店。这样的模式给ISpa也带来真金白银。2015年全年,到店的消费收入7176万,占比总收入的98%。除去高质量的服务之外,吸引高端酒店的是ISpa对于“非住店”顾客的精准开发。

  ISpa的盈利模式依托酒店,但并不依赖酒店。与五星级酒店合作得风生水起,但住店客人只占总客人的20%-30%,其余近70%的客源都来自“非住店”顾客。

  在获客成本极高的高端美业,采取传统地面推广、路边拦人的方式就是做无用功。“地推的1000个人里,只有1个是我的潜在客户。这是浪费。”张志奇说,“要在高端人群聚集的地方展示我们的品牌。”以广州和深圳两个城市为例:广州白云是南航空姐聚集区,深圳则有4家游艇会,张志奇捕捉到了这一信息,针对高端人群展开营销,实现用较低的成本捕获更多潜在客户。

  曾被证明是伪命题的O2O,原来还可以这么干

  过去一年,O2O的价格混战证明了亏本赚吆喝难以为继。

  将时间拉回至2015年,这是传统的美容行业正面遭遇互联网颠覆的一年。以“河狸家”为代表的手艺人上门美容成为新兴模式。大量美容O2O领域的公司一时被资本的浪潮高高举起,转瞬间又被重重拍回岸上。

  “资本涌入带来了伪需求。1元就能团购200元的服务,结果就是技师跑到学校宿舍的上铺去给学生做美容,这太荒唐了。”张志奇说,“已经有烧完钱的公司希望ISpa能收购他们,其实就是让我给他们员工发工资。”

  ISpa投身于到家服务之初,也曾经犹豫过是否要进行补贴。但最终,张志奇靠自己的定力放弃加入价格战。“ISpa到家服务的顶级理疗师价格是2800元,平均客单价400元左右,未来也会维持这个价格。”张志奇说。

  尽管过去一年到家业务只带来了100万的收入,占比仅为1.2%。但张志奇对于未来的市场非常乐观:“不久的将来,一线和二线城市,美容到家服务会产生100亿的营业额。现在是做到家服务最好的时候,因为前一年已经有大量企业烧钱死掉了,同时顾客也被大量的免费体验教育了。”

  对于品牌的长期规划,张志奇则显示出了理工男身上冷静的特质:“我的终极目标是,在24个城市开设100家ISpa店。我不会把这个品牌做成大路货。然后就是把到家服务做成平台制,像滴滴那样。基于400元的客单价,整体盈利是没有问题的。”

  挂牌新三板,拥有券商等投资机构的加持,未来ISpa的想象空间还很大。

浅淡网络营销定位对企业网络推广的意义

  随着中国互联网的迅猛发展,通过网络营销推广自己企业的产品或者服务越来越被许多中小企业的老板所接受,但是越来越多的企业选择了网络营销,但是效果却是两个极端,有些企业通过网络营销可以给销售额提升几十个百分点,但是绝对多数的企业并没有通过网络营销带来任何的业绩,伤财又伤力,那么这绝大多数的企业的问题出在哪呢,据权威的统计表明,百分之九十以上的企业没有走好网络营销的第一步,那是什么呢,就是长沙中虎网络科技推出的“五核”营销方案中的第一步:定位,接下来,我从以下六个方法来阐述网络营销定位系统!如何去定位,定位分些?

  一、目标客户定位

  什么是目标客户? 目标客户在哪里? 他们是谁? 在什么地方可以找到?

  找出这些共性,企业的目标客户自然就浮出水面了,这也是判断谁是企业目标客户的准则。

  比如:开小学教育培训学校的,如小学初中,单课程一对一培训的,那么这个人群怎么定位呢,首先要想到用这些服务或者产品是什么人,小学生或者初中生,但是这个教育培训的真正客户人群并不是小学生本人,还是小学生的家长,不是吗?因此这里定位的人群是四十岁左右的人群。

  目标客户在哪里?那么就得分析这群人上网的习惯是什么,qq,或者浏览新闻,或者打地主,游戏等,那么我们就可以通过腾讯的qq邮件群发服务找到这群人,然后发邮件,那么怎么发会更有效果,后面会讲到,新闻的话可以找到一些大型的新闻网站像什么新浪或者网易可以找到这些中间商去发软文或者打图片广告都可以。像游戏的话可以找到游戏商商量合作事宜!

  再比如:做母婴产品的,这个产品的最大消费人群就是妈妈,那么妈妈在网络上的行为是怎么样的呢?他们一般就是qq,或者玩简单的网络游戏(切水果等),或者还有很大一部份喜欢在母婴相关知识论坛,像宝宝树,好孩子社区,只要找准备了活动区域,那我们就可以通过我们的网络技巧打入到这些地方去!

  二、核心产品定位

  核心产品也就是顾客真正要购买的利益,既产品的使用价值。

  所谓的核心产品定位就是你在客户心中的地位。

  例如,对于洗衣机,消费者要购买的是“方便、快捷、干净”;对于电影院,消费者要购买的就是娱乐。

  三、独特卖点定位

  独特卖点定位是给顾客的印象和感觉,以及你要切的市场的这块饼。你的公司=什么字眼。比如:麦当劳=速食店,微软=软件的霸主,沃尔沃=安全,格兰仕=微波炉,

  比尔盖茨=世界首富,没有人会说他是科学家,因为他给人的印象就是世界首富。

  李嘉诚=华人首富,没有人说他是股票大王,因为他给人的印象就是华人首富。

  一流的企业都不是贩卖产品或服务的企业,他们都是贩卖其在消费者心目中的印象。你如何去找到一个专属的字眼,深入人心,这就是定位。说白了,独特卖点就是你与众不同的核心竞争力的表现。

  比如:我们之前有接触一个钻石行业相关的一个客户,网络卖钻石并不是什么新闻,而且现在竞争特别激烈,就把它的产品定位成一个指纹钻戒。把客户的指统印到了钻戒上,变成了世界独一无二的产品!很受消费者欢迎!

  四、关键字定位

  关键字定位主要是针对企业公司自身的网站面向搜索引擎优化的,在我们中虎营销接触的客户中很多人以为关键字就是行业的名称或者公司产品或者服务的名称,其实不是这样,我们应该是跟据我们的客户群他们找你公司产品或者服务时会输入什么关键字,这是一方面,另一方面就是像有些关键字非常热门,然后排在前面的都是大公司,而且已经有很多年了的,这时你跟你的竞争对手去选一样的关键字显然是不合适的,那么这时我们就要通过百度或者google的工具找到这个行业或者产品对应的长尾词,这时网站再去优化可能就容易得多。同时效果也会有一定的保证!

  五、网络渠道定位

  什么是网络渠道定位呢?其实不然就是采取何种方式宣传自身的产品。这里主要是讲二点:

  (1)一是在专业的大型网店平台上注册会员,开设个人店铺;

  (2)一是自立门户型的企业电子商务网站;

  这个可以选其一,当然也可以双管齐下。这主要是跟据企业公司的运营实力来进行选定!

  六、盈利模式定位

  互联网行业的盈利方式主要分为三类。分别为:广告盈利、销售盈利、渠道盈利。

  我想大部份的企业都是销售或者渠道。这里就不详说了!

  中虎营销总结:当前90%企业没有做这网络营销定位策划,只有跟据企业自身出发定位好网络营销策略,打出的推广组合拳才能更精准,更有效!“做正确的事,正确的做事”

  相信您只要做好了这六种网络营销定位法则,相信您已经成功的迈出了第一步!

新手剖析挖掘网站核心关键词

  很多seo新手都不知道关键词该如何选择,什么关键词才是符合我们网站的关键词。现在我也和大家一起探讨一下,希望对一些seo新手起到一些帮助。为什么要选出核心关键词?因为你要做关键词优化必须知道哪些关键词是给你带来直接盈利的而且是符合现在网民搜索的,我们把核心关键词一帮统称为网站首页的目标关键词。

  我们知道网站的关键词很多,那我们如何分部呢?就拿我的网站来说吧,我是博尔外语英语培训网站的站长,我是这样分词的,2-3个重点词放在首页,可以说是一些高检索、高难度的词,因为首页的权重是最高的,所以重点词最好放首页。难度次一级的词我会选择放在分类首页中。难度低得词我会选择放在文章或者产品中。这样的话你会清晰的知道网站关键词布局,后期如何去优化。下来我对核心关键词再补充几点。

  1、如何定位你的核心关键词

  第一步先把你网站所有的关键词不管热门的、冷门的都通通列出来,之后你就要站在第三方的角度去考虑问题。1、网站能给客户带来什么。2、客户有这些需求后通过哪些关键词进行搜索。3、客户在寻找产品时会用到什么关键词。只有通过这些为什么你才能更好的选择出好的关键词。

  2、发挥你的人际关系

  一个人的脑袋是不够用得最好发挥你周边的朋友一起来帮你想,尤其是除公司人员之外,因为我们更多需要收集外部人员的搜索信息。

  3、分析竞争对手关键词

  你要知道你的对手做了什么词,他们是怎么做的,排名如何。我们如何去看呢?用我的例子说明下,英语培训做网络推广通过百度指数或者谷歌关键词工具可以了解到英语培训、英语培训机构、英语培训学校是比较热门的关键词。当我们搜索这些关键词的时候我们可以看到百度快照前几位的排名,最好我们要先观察一个周期时间,看看哪个机构的排名比较稳定,就可以知道他们做的优化效果是可取的,之后你只需要点进去竞争对手的网站,查看源代码,我们就可以看到竞争对手网站的关键词标签,就是我们所说的keyword,多收集几家我们这样对我们的制定关键词策略有很大的帮助。

  4、借助工具收集数据

  完成以上部分后,我们就可以通过关键词推荐工具,比如百度或者谷歌的关键词推荐工具,了解关键词的检索量。做好以上的你会得到很多个关键词,然后就可以开始制定你的核心关键词策划了

  文章由环球贸易网编辑!

也谈地方的运营

  不知不觉,多少站长都盯了地方信息港这快肉,他们开始疯狂地找程序,疯狂地添加内容,殊不知做地方信息港需要大量的人力和财力。单靠一个人做是不行的,这样只是玩玩而已。

  如果你想做地方信息港,你需要又一个团队,这个团队不需要很强大,但是必须麻雀虽小,五脏俱全。有负责技术的,有负责美工的,有负责运营的,有负责宣传的…..这样才是一个地方信息港应该具备的。不要去渴望某一套程序能把所有问题都解决,有的选dede,有的选帝国、有的选PHP。这些程序只是给你提供一个框架,后续的工程还很多很多,如果你的资金和技术不行,建议不要往这方面靠拢。

  有很多地方门户网有着很好的规划,但是盈利缓慢,运营1-2年后都没有很好的效益,就会丧失经营的兴趣,减少投入。尤其是个人站长运营地方门户一定要计算你的网站月度最低要开支多少、多少时间后收支平衡,多长时间后能盈利,多长时间后纯利润达到你的目标收入,你是否有足够的资金撑到达到盈利目标的哪一天?要知道这个行业随时随地会诞生出很多竞争对手,你如果不能快速实现盈利目标,你就没有足够的实力支撑你持续发展。

  我开始做我们本地的信息港,用的是数字人,这套程序怎么说呢,可以用,但是太乱,貌似什么东西都有,其实什么东西都不吸引人,做了2个月,在我们本地信息港可以做到200IP,但是也就是200IP了,再往前发展的可能性是微乎其微了,因为没有什么发展的潜力。还有我们本地的有个信息港已经好几年了,超越它很难。这个时候,我选择了放弃这套程序,因为以我现在的能力,去接着开发很难,我选择用dz的论坛,用论坛的好处是可以拉拢人气,而且也好管理。现在发帖量每天稳定上升中…..

  下面谈些做地方信息港应该注意的细节

  1:页面大方,美观。第一印象很重要!

  2:注册不要太烦琐,不要太高估网民的能力。

  3:利用搜索引擎,优化关键词。

  4:加油吧,坚持住!

  另外,做本地站,需要和很多部门搞好关系,最好是政府支持,有政府的支持,你的牌子才会打的响。(多报道点政府人物的好人好事,o(∩_∩)o…哈哈)

  时间有限,到此为之

整洁之道 怎样让代码更明确、简单、有力

 

 

  这篇文章摘录自《代码整洁之道》第一章,这本书被看作是程序员必读的书籍之一。但好的书不只是交给你工具、技术,更多是思维过程,近乎禅学、至理,这本书符合这样的定义。本章技术元素最少,适合每一个领域的人阅读。

  阅读本书有两种原因:第一,你是个程序员;第二,你想成为更好的程序员。很好。我们需要更好的程序员。

  这是本有关编写好程序的书。它充斥着代码。我们要从各个方向来考察这些代码。从顶向下,从底往上,从里而外。读完后,就能知道许多关于代码的事了。而且,我们还能说出好代码和糟糕的代码之间的差异。我们将了解到如何写出好代码。我们也会知道,如何将糟糕的代码改成好代码。

  1.1 要有代码

  有人也许会以为,关于代码的书有点儿落后于时代-代码不再是问题;我们应当关注模型和需求。确实,有人说过我们正在临近代码的终结点。很快,代码就会自动产生出来,不需要再人工编写。程序员完全没用了,因为商务人士可以从规约直接生成程序。

  扯淡!我们永远抛不掉代码,因为代码呈现了需求的细节。在某些层面上,这些细节无法被忽略或抽象,必须明确之。将需求明确到机器可以执行的细节程度,就是编程要做的事。而这种规约正是代码。

  我期望语言的抽象程度继续提升。我也期望领域特定语言的数量继续增加。那会是好事一桩。但那终结不了代码。实际上,在较高层次上用领域特定语言撰写的规约也将是代码!它也得严谨、精确、规范和详细,好让机器理解和执行。

  那帮以为代码终将消失的伙计,就像是巴望着发现一种无规范数学的数学家们一般。他们巴望着,总有一天能创造出某种机器,我们只要想想、嘴都不用张就能叫它依计行事。那机器要能透彻理解我们,只有这样,它才能把含糊不清的需求翻译为可完美执行的程序,精确满足需求。

  这种事永远不会发生。即便是人类,倾其全部的直觉和创造力,也造不出满足客户模糊感觉的成功系统来。如果说需求规约原则教给了我们什么,那就是归置良好的需求就像代码一样正式,也能作为代码的可执行测试来使用。

  记住,代码确然是我们最终用来表达需求的那种语言。我们可以创造各种与需求接近的语言。我们可以创造帮助把需求解析和汇整为正式结构的各种工具。然而,我们永远无法抛弃必要的精确性-所以代码永存。

  1.2 糟糕的代码

  最近我在读Kent Beck著Implementation Patterns(中译版《实现模式》) 一书的序言。他这样写道:"……本书基于一种不太牢靠的前提:好代码的确重要……"这前提不牢靠?我反对!我认为这是该领域最强固、最受支持、最被强调的前提了(我想Kent也知道)。我们知道好代码重要,是因为其短缺实在困扰了我们太久。

  20世纪80年代末,有家公司写了个很流行的杀手应用,许多专业人士都买来用。然后,发布周期开始拉长。缺陷总是不能修复。装载时间越来越久,崩溃的几率也越来越大。至今我还记得自己在某天沮丧地关掉那个程序,从此再不用它。在那之后不久,该公司就关门大吉了。

  20年后,我见到那家公司的一位早期雇员,问他当年发生了什么事。他的回答叫我愈发恐惧起来。原来,当时他们赶着推出产品,代码写得乱七八糟。特性越加越多,代码也越来越烂,最后再也没法管理这些代码了。是糟糕的代码毁了这家公司。

  你是否曾为糟糕的代码所深深困扰?如果你是位有点儿经验的程序员,定然多次遇到过这类困境。我们有专用来形容这事的词:沼泽(wading)。我们趟过代码的水域。我们穿过灌木密布、瀑布暗藏的沼泽地。我们拼命想找到出路,期望有点什么线索能启发我们到底发生了什么事;但目光所及,只是越来越多死气沉沉的代码。

  你当然曾为糟糕的代码所困扰过。那么-为什么要写糟糕的代码呢?

  是想快点完成吗?是要赶时间吗?有可能。或许你觉得自己要干好所需的时间不够;假使花时间清理代码,老板就会大发雷霆。或许你只是不耐烦再搞这套程序,期望早点结束。或许你看了看自己承诺要做的其他事,意识到得赶紧弄完手上的东西,好接着做下一件工作。这种事我们都干过。

  我们都曾经瞟一眼自己亲手造成的混乱,决定弃之而不顾,走向新一天。我们都曾经看到自己的烂程序居然能运行,然后断言能运行的烂程序总比什么都没有强。我们都曾经说过有朝一日再回头清理。当然,在那些日子里,我们都没听过勒布朗(LeBlanc)法则:稍后等于永不(Later equals never)。

  1.3 混乱的代价

  只要你干过两三年编程,就有可能曾被某人的糟糕的代码绊倒过。如果你编程不止两三年,也有可能被这种代码拖过后腿。进度延缓的程度会很严重。有些团队在项目初期进展迅速,但有那么一两年的时间却慢如蜗行。对代码的每次修改都影响到其他两三处代码。修改无小事。每次添加或修改代码,都得对那堆扭纹柴了然于心,这样才能往上扔更多的扭纹柴。这团乱麻越来越大,再也无法理清,最后束手无策。

  随着混乱的增加,团队生产力也持续下降,趋向于零。当生产力下降时,管理层就只有一件事可做了:增加更多人手到项目中,期望提升生产力。可是新人并不熟悉系统的设计。他们搞不清楚什么样的修改符合设计意图,什么样的修改违背设计意图。而且,他们以及团队中的其他人都背负着提升生产力的可怕压力。于是,他们制造更多的混乱,驱动生产力向零那端不断下降。

  1.3.1 华丽新设计

  最后,开发团队造反了,他们告诉管理层,再也无法在这令人生厌的代码基础上做开发。他们要求做全新的设计。管理层不愿意投入资源完全重启炉灶,但他们也不能否认生产力低得可怕。他们只好同意开发者的要求,授权去做一套看上去很美的华丽新设计。

  于是就组建了一支新军。谁都想加入这个团队,因为它是张白纸。他们可以重新来过,搞出点真正漂亮的东西来。但只有最优秀、最聪明的家伙被选中。其余人等则继续维护现有系统。

  现在有两支队伍在竞赛了。新团队必须搭建一套新系统,要能实现旧系统的所有功能。另外,还得跟上对旧系统的持续改动。在新系统功能足以抗衡旧系统之前,管理层不会替换掉旧系统。

  竞赛可能会持续极长时间。我就见过延续了十年之久的。到了完成的时候,新团队的老成员早已不知去向,而现有成员则要求重新设计一套新系统,因为这套系统太烂了。

  假使你经历过哪怕是一小段我谈到的这种事,那么你一定知道,花时间保持代码整洁不但有关效率,还有关生存。

  1.3.2 态度

  你是否遇到过某种严重到要花数个星期来做本来只需数小时即可完成的事的混乱状况?你是否见过本来只需做一行修改,结果却涉及上百个模块的情况?这种事太常见了。

  怎么会发生这种事?为什么好代码会这么快就变质成糟糕的代码?理由多得很。我们抱怨需求变化背离了初期设计。我们哀叹进度太紧张,没法干好活。我们把问题归咎于那些愚蠢的经理、苛求的用户、没用的营销方式和那些电话消毒剂。不过,亲爱的呆伯特(Dilbert) ,我们是自作自受 。我们太不专业了。

  这话可不太中听。怎么会是自作自受呢?难道不关需求的事?难道不关进度的事?难道不关那些蠢经理和没用的营销手段的事?难道他们就不该负点责吗?

  不。经理和营销人员指望从我们这里得到必须的信息,然后才能做出承诺和保证;即便他们没开口问,我们也不该羞于告知自己的想法。用户指望我们验证需求是否都在系统中实现了。项目经理指望我们遵守进度。我们与项目的规划脱不了干系,对失败负有极大的责任;特别是当失败与糟糕的代码有关时尤为如此!

  "且慢!"你说。"不听经理的,我就会被炒鱿鱼。"多半不会。多数经理想要知道实情,即便他们看起来不喜欢实情。多数经理想要好代码,即便他们总是痴缠于进度。他们会奋力卫护进度和需求;那是他们该干的。你则当以同等的热情卫护代码。

  再说明白些,假使你是位医生,病人请求你在给他做手术前别洗手,因为那会花太多时间,你会照办吗 ?本该是病人说了算;但医生却绝对应该拒绝遵从。为什么?因为医生比病人更了解疾病和感染的风险。医生如果按病人说的办,就是一种不专业的态度(更别说是犯罪了)。

  同理,程序员遵从不了解混乱风险的经理的意愿,也是不专业的做法。

  1.3.3 迷题

  程序员面临着一种基础价值谜题。有那么几年经验的开发者都知道,之前的混乱拖了自己的后腿。但开发者们背负期限的压力,只好制造混乱。简言之,他们没花时间让自己做得更快!

  真正的专业人士明白,这道谜题的第二部分说错了。制造混乱无助于赶上期限。混乱只会立刻拖慢你,叫你错过期限。赶上期限的唯一方法-做得快的唯一方法 -就是始终尽可能保持代码整洁。

  1.3.4 整洁代码的艺术

  假设你相信混乱的代码是祸首,假设你接受做得快的唯一方法是保持代码整洁的说法,你一定会自问:"我怎么才能写出整洁的代码?"不过,如果你不明白整洁对代码有何意义,尝试去写整洁代码就毫无所益!

  坏消息是写整洁代码很像是绘画。多数人都知道一幅画是好还是坏。但能分辨优劣并不表示懂得绘画。能分辨整洁代码和肮脏代码,也不意味着会写整洁代码!

  写整洁代码,需要遵循大量的小技巧,贯彻刻苦习得的"整洁感"。这种"代码感"就是关键所在。有些人生而有之。有些人费点劲才能得到。它不仅让我们看到代码的优劣,还予我们以借戒规之力化劣为优的攻略。

  缺乏"代码感"的程序员,看混乱是混乱,无处着手。有"代码感"的程序员能从混乱中看出其他的可能与变化。"代码感"帮助程序员选出最好的方案,并指导程序员制订修改行动计划,按图索骥。

  简言之,编写整洁代码的程序员就像是艺术家,他能用一系列变换把一块白板变作由优雅代码构成的系统。

  1.3.5 什么是整洁代码

  有多少程序员,就有多少定义。所以我只询问了一些非常知名且经验丰富的程序员。

  Bjarne Stroustrup,C++语言发明者,C++ Programming Language(中译版《C++程序设计语言》)一书作者。

  我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。

  Bjarne用了"优雅"一词。说得好!我MacBook上的词典提供了如下定义:外表或举止上令人愉悦的优美和雅观;令人愉悦的精致和简单。注意对"愉悦"一词的强调。Bjarne显然认为整洁的代码读起来令人愉悦。读这种代码,就像见到手工精美的音乐盒或者设计精良的汽车一般,让你会心一笑。

  Bjarne也提到效率-而且两次提及。这话出自C++发明者之口,或许并不出奇;不过我认为并非是在单纯追求速度。被浪费掉的运算周期并不雅观,并不令人愉悦。留意Bjarne怎么描述那种不雅观的结果。他用了"引诱"这个词。诚哉斯言。糟糕的代码引发混乱!别人修改糟糕的代码时,往往会越改越烂。

  务实的Dave Thomas和Andy Hunt从另一角度阐述了这种情况。他们提到破窗理论 。窗户破损了的建筑让人觉得似乎无人照管。于是别人也再不关心。他们放任窗户继续破损。最终自己也参加破坏活动,在外墙上涂鸦,任垃圾堆积。一扇破损的窗户开辟了大厦走向倾颓的道路。

  Bjarne也提到完善错误处理代码。往深处说就是在细节上花心思。敷衍了事的错误处理代码只是程序员忽视细节的一种表现。此外还有内存泄漏,还有竞态条件代码。还有前后不一致的命名方式。结果就是凸现出整洁代码对细节的重视。

  Bjarne以"整洁的代码只做好一件事"结束论断。毋庸置疑,软件设计的许多原则最终都会归结为这句警语。有那么多人发表过类似的言论。糟糕的代码想做太多事,它意图混乱、目的含混。整洁的代码力求集中。每个函数、每个类和每个模块都全神贯注于一事,完全不受四周细节的干扰和污染。

  Grady Booch,Object Oriented Analysis and Design with Applications(中译版《面向对象分析与设计》)一书作者。

  整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句。

  Grady的观点与Bjarne的观点有类似之处,但他从可读性的角度来定义。我特别喜欢"整洁的代码如同优美的散文"这种看法。想想你读过的某本好书。回忆一下,那些文字是如何在脑中形成影像!就像是看了场电影,对吧?还不止!你还看到那些人物,听到那些声音,体验到那些喜怒哀乐。

  阅读整洁的代码和阅读Lord of the Rings(中译版《指环王》)自然不同。不过,仍有可类比之处。如同一本好的小说般,整洁的代码应当明确地展现出要解决问题的张力。它应当将这种张力推至高潮,以某种显而易见的方案解决问题和张力,使读者发出"啊哈!本当如此!"的感叹。

  窃以为Grady所谓"干净利落的抽象"(crisp abstraction),乃是绝妙的矛盾修辞法。毕竟crisp几乎就是"具体"(concrete)的同义词。我MacBook上的词典这样定义crisp一词:果断决绝,就事论事,没有犹豫或不必要的细节。尽管有两种不同的定义,该词还是承载了有力的信息。代码应当讲述事实,不引人猜测。它只该包含必需之物。读者应当感受到我们的果断决绝。

  "老大"Dave Thomas,OTI公司创始人,Eclipse战略教父。

  整洁的代码应可由作者之外的开发者阅读和增补。它应当有单元测试和验收测试。它使用有意义的命名。它只提供一种而非多种做一件事的途径。它只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的API。代码应通过其字面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表达。

  Dave老大在可读性上和Grady持相同观点,但有一个重要的不同之处。Dave断言,整洁的代码便于其他人加以增补。这看似显而易见,但亦不可过分强调。毕竟易读的代码和易修改的代码之间还是有区别的。

  Dave将整洁系于测试之上!要在十年之前,这会让人大跌眼镜。但测试驱动开发(Test Driven Development)已在行业中造成了深远影响,成为基础规程之一。Dave说得对。没有测试的代码不干净。不管它有多优雅,不管有多可读、多易理解,微乎测试,其不洁亦可知也。

  Dave两次提及"尽量少"。显然,他推崇小块的代码。实际上,从有软件起人们就在反复强调这一点。越小越好。

  Dave也提到,代码应在字面上表达其含义。这一观点源自Knuth的"字面编程"(literate programming) 。结论就是应当用人类可读的方式来写代码。

  Michael Feathers,Working Effectively with Legacy Code(中译版《修改代码的艺术》)一书作者。

  我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的。整洁的代码总是看起来像是某位特别在意它的人写的。几乎没有改进的余地。代码作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给你的代码-全心投入的某人留下的代码。

  一言以蔽之:在意。这就是本书的题旨所在。或许该加个副标题,如何在意代码。

  Michael一针见血。整洁代码就是作者着力照料的代码。有人曾花时间让它保持简单有序。他们适当地关注到了细节。他们在意过。

  Ron Jeffries,Extreme Programming Installed(中译版《极限编程实施》)以及Extreme Programming Adventures in C#(中译版《C#极限编程探险》)作者。

  Ron初入行就在战略空军司令部(Strategic Air Command)编写Fortran程序,此后几乎在每种机器上编写过每种语言的代码。他的言论值得咀嚼。

  近年来,我开始研究贝克的简单代码规则,差不多也都琢磨透了。简单代码,依其重要顺序:

  能通过所有测试;

  没有重复代码;

  体现系统中的全部设计理念;

  包括尽量少的实体,比如类、方法、函数等。

  在以上诸项中,我最在意代码重复。如果同一段代码反复出现,就表示某种想法未在代码中得到良好的体现。我尽力去找出到底那是什么,然后再尽力更清晰地表达出来。

  在我看来,有意义的命名是体现表达力的一种方式,我往往会修改好几次才会定下名字来。借助Eclipse这样的现代编码工具,重命名代价极低,所以我无所顾忌。然而,表达力还不只体现在命名上。我也会检查对象或方法是否想做的事太多。如果对象功能太多,最好是切分为两个或多个对象。如果方法功能太多,我总是使用抽取手段(Extract Method)重构之,从而得到一个能较为清晰地说明自身功能的方法,以及另外数个说明如何实现这些功能的方法。

  消除重复和提高表达力让我在整洁代码方面获益良多,只要铭记这两点,改进脏代码时就会大有不同。不过,我时常关注的另一规则就不太好解释了。

  这么多年下来,我发现所有程序都由极为相似的元素构成。例如"在集合中查找某物"。不管是雇员记录数据库还是名-值对哈希表,或者某类条目的数组,我们都会发现自己想要从集合中找到某一特定条目。一旦出现这种情况,我通常会把实现手段封装到更抽象的方法或类中。这样做好处多多。

  可以先用某种简单的手段,比如哈希表来实现这一功能,由于对搜索功能的引用指向了我那个小小的抽象,就能随需应变,修改实现手段。这样就既能快速前进,又能为未来的修改预留余地。

  另外,该集合抽象常常提醒我留意"真正"在发生的事,避免随意实现集合行为,因为我真正需要的不过是某种简单的查找手段。

  减少重复代码,提高表达力,提早构建简单抽象。这就是我写整洁代码的方法。

  Ron以寥寥数段文字概括了本书的全部内容。不要重复代码,只做一件事,表达力,小规模抽象。该有的都有了。

  Ward Cunningham,Wiki发明者,eXtreme Programming(极限编程)的创始人之一,Smalltalk语言和面向对象的思想领袖。所有在意代码者的教父。

  如果每个例程都让你感到深合己意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。

  这种说法很Ward。它教你听了之后就点头,然后继续听下去。如此在理,如此浅显,绝不故作高深。你大概以为此言深合己意吧。再走近点看看。

  "……深合己意"。你最近一次看到深合己意的模块是什么时候?模块多半都繁复难解吧?难道没有触犯规则吗?你不是也曾挣扎着想抓住些从整个系统中散落而出的线索,编织进你在读的那个模块吗?你最近一次读到某段代码、并且如同对Ward的说法点头一般对这段代码点头,是什么时候的事了?

  Ward期望你不会为整洁代码所震惊。你无需花太多力气。那代码就是深合你意。它明确、简单、有力。每个模块都为下一个模块做好准备。每个模块都告诉你下一个模块会是怎样的。整洁的程序好到你根本不会注意到它。设计者把它做得像一切其他设计般简单。

  那Ward有关"美"的说法又如何呢?我们都曾面临语言不是为要解决的问题所设计的困境。但Ward的说法又把球踢回我们这边。他说,漂亮的代码让编程语言像是专为解决那个问题而存在!所以,让语言变得简单的责任就在我们身上了!当心,语言是冥顽不化的!是程序员让语言显得简单。

  1.8 小结

  艺术书并不保证你读过之后能成为艺术家,只能告诉你其他艺术家用过的工具、技术和思维过程。本书同样也不担保让你成为好程序员。它不担保能给你"代码感"。它所能做的,只是展示好程序员的思维过程,还有他们使用的技巧、技术和工具。

  和艺术书一样,本书也充满了细节。代码会很多。你会看到好代码,也会看到糟糕的代码。你会看到糟糕的代码如何转化为好代码。你会看到启发、规条和技巧的列表。你会看到一个又一个例子。但最终结果取决于你自己。

http://tj.kvov.com.cn/jzxx23979.html

今日推荐知识库
标语口号
加强学习,相互交流,切磋技艺,共同提高。
标语口号
参与禁毒斗争构建和谐社会。
语录
厉直刚毅,材在矫正,失在激讦。
标语口号
有志青年,应积极报名应征,保家卫国!
语录
《约定》里唱,远处的钟声回荡在雨里,我希望平安夜的钟声回荡在雪里。