1、流明·星辉的基本信息
“光子·重构”也叫做“流明·星辉”。是凌驾于妖精三大魔法之上的秘密大魔法。只是每个汉化组的翻译不同。首先从名字上来理解,真岛在漫画中大量使用英文,说明这个名字用英文的理解更好。“Lumen Etoile”Lumen: 流明(光束能量单位),Etoile: (原法语词)星形花纹,是与“星”有关的词语。由此看来,似乎叫做“流明·星辉”更符合这个神秘之物。而“重构”只是一个翻译组留下的名字,所以不能但从中文来理解,而对于“光子·重构”中重构一词的猜测,也有些重点偏离的感觉。所以,从字面上考虑,光束的能量和星,可能是是集合光魔法与星星的力量(星灵魔法?天体魔法?)。有可能是利用光能来操纵星空天体的一种魔法。
另外,对于“光子·重构”我最先回想起的就是当初伊万和初代对光子重构的矛盾评价。伊万说它是“妖精的尾巴的黑暗面”,而初代却说是“妖精的尾巴的光明”。由此可知,“光子·重构”是一个具有争议性的东西。同时又回想起,真岛并没有漫画中吐露“光子重构”的真身,是魔法?还是类似涅番那种转换机构。
2、什么是代码重构?
代码重构(英语:Code refactoring)重构就是在不改变软件系统外部行为的前提下,改善它的内部结构。
软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。
java重构:指程序员对已有程序在尽量不改变接口的前提下,进行重新编写代码的工作,一般有以下几方面:
1、去除已知bug。
2、提高程序运行效率。
3、增加新的功能。
重构举例:(简化代码、提升效率)
重构前:
重构后
何时着手重构(Refactoring)
新官上任三把火,开始一个全新??、脚不停蹄、加班加点,一支声势浩大的千军万"码"夹裹着程序员激情和扣击键盘的鸣金奋力前行,势如破竹,攻城掠地,直指"黄龙府"。
开发经理是这支浩浩汤汤代码队伍的统帅,他负责这支队伍的命运,当齐桓公站在山顶上看到管仲训练的队伍整齐划一地前进时,他感叹说"我有这样一支军队哪里还怕没有胜利呢?"。但很遗憾,你手中的这支队伍原本只是散兵游勇,在前进中招兵买马,不断壮大,所以队伍变形在所难免。当开发经理发觉队伍变形时,也许就是克制住攻克前方山头的诱惑,停下脚步整顿队伍的时候了。
Kent Beck提出了"代码坏味道"的说法,和我们所提出的"队伍变形"是同样的意思,队伍变形的信号是什么呢?以下列述的代码症状就是"队伍变形"的强烈信号:
·代码中存在重复的代码
中国有118 家整车生产企业,数量几乎等于美、日、欧所有汽车厂家数之和,但是全国的年产量却不及一个外国大汽车公司的产量。重复建设只会导致效率的低效和资源的浪费。
程序代码更是不能搞重复建设,如果同一个类中有相同的代码块,请把它提炼成类的一个独立方法,如果不同类中具有相同的代码,请把它提炼成一个新类,永远不要重复代码。
·过大的类和过长的方法
过大的类往往是类抽象不合理的结果,类抽象不合理将降低了代码的复用率。方法是类王国中的诸侯国,诸侯国太大势必动摇中央集权。过长的方法由于包含的逻辑过于复杂,错误机率将直线上升,而可读性则直线下降,类的健壮性很容易被打破。当看到一个过长的方法时,需要想办法将其划分为多个小方法,以便于分而治之。
·牵一毛而需要动全身的修改
当你发现修改一个小功能,或增加一个小功能时,就引发一次代码地震,也许是你的设计抽象度不够理想,功能代码太过分散所引起的。
·类之间需要过多的通讯
A类需要调用B类的过多方法访问B的内部数据,在关系上这两个类显得有点狎昵,可能这两个类本应该在一起,而不应该分家。
·过度耦合的信息链
"计算机是这样一门科学,它相信可以通过添加一个中间层解决任何问题",所以往往中间层会被过多地追加到程序中。如果你在代码中看到需要获取一个信息,需要一个类的方法调用另一个类的方法,层层挂接,就象输油管一样节节相连。这往往是因为衔接层太多造成的,需要查看就否有可移除的中间层,或是否可以提供更直接的调用方法。
·各立山头干革命
如果你发现有两个类或两个方法虽然命名不同但却拥有相似或相同的功能,你会发现往往是因为开发团队协调不够造成的。笔者曾经写了一个颇好用的字符串处理类,但因为没有及时通告团队其他人员,后来发现项目中居然有三个字符串处理类。革命资源是珍贵的,我们不应各立山头干革命。
·不完美的设计
在笔者刚完成的一个比对报警项目中,曾安排阿朱开发报警模块,即通过Socket向指定的短信平台、语音平台及客户端报警器插件发送报警报文信息,阿朱出色地完成了这项任务。后来用户又提出了实时比对的需求,即要求第三方系统以报文形式向比对报警系统发送请求,比对报警系统接收并响应这个请求。这又需要用到Socket报文通讯,由于原来的设计没有将报文通讯模块独立出来,所以无法复用阿朱开发的代码。后来我及时调整了这个设计,新增了一个报文收发模块,使系统所有的对外通讯都复用这个模块,系统的整体设计也显得更加合理。
每个系统都或多或少存在不完美的设计,刚开始可能注意不到,到后来才会慢慢凸显出来,此时唯有勇于更改才是最好的出路。
·缺少必要的注释
虽然许多软件工程的书籍常提醒程序员需要防止过多注释,但这个担心好象并没有什么必要。往往程序员更感兴趣的是功能实现而非代码注释,因为前者更能带来成就感,所以代码注释往往不是过多而是过少,过于简单。人的记忆曲线下降的坡度是陡得吓人的,当过了一段时间后再回头补注释时,很容易发生"提笔忘字,愈言且止"的情形。
曾在网上看到过微软的代码注释,其详尽程度让人叹为观止,也从中体悟到了微软成功的一个经验。
3、重构:改善既有代码的设计的作品序言
第一次听到“重构”这个词,是在2001年10月。在当时,它的思想足以令我感到震撼。软件自有其美感所在。软件工程希望建立完美的需求与设计,按照既有的规范编写标准划一的代码,这是结构的美;快速迭代和RAD颠覆“全知全能”的神话,用近乎刀劈斧砍(crack)的方式解决问题,在混沌的循环往复中实现需求,这是解构的美;而Kent Beck与Martin Fowler两人站在一起,以XP那敏捷而又严谨的方法论演绎了重构的美——我不知道是谁最初把refactoring一词翻译为“重构”,或许无心插柳,却成了点睛之笔。
我一直是设计模式的爱好者。曾经在我的思想中,软件开发应该有一个“理想国”——当然,在这个理想国维持着完美秩序的,不是哲学家,而是模式。设计模式给我们的,不仅仅是一些具体问题的解决方案,更有追求完美“理型”的渴望。但是,Joshua Kerievsky在那篇著名的《模式与XP》(收录于《极限编程研究》一书)中明白地指出:在设计前期使用模式常常导致过度工程(over-engineering)。这是一个残酷的现实,单凭对完美的追求无法写出实用的代码,而“实用”是软件压倒一切的要素。从一篇《停止过度工程》开始,Kerievsky撰写了“Refactoring to Patterns”系列文章。这位犹太人用他民族性的睿智头脑,敏锐地发现了软件的后结构主义道路。而让设计模式在飞速变化的网络时代重新闪现光辉的,又是重构的力量。
在一篇流传甚广的帖子里,有人把《重构》与《设计模式》并列为“Java行业的圣经”。在我看来这种并列其实并不准确。实际上,尽管我如此喜爱这本《重构》,但自从完成翻译之后,就再也没有读过它。不,不是因为我已经对它烂熟于心,而是因为重构已经变成了我的另一种生活方式,变成了我每天的“面包与黄油”,变成了我们整个团队的空气与水,以至于无需再到书中寻找任何“神谕”。而《设计模式》,我倒是放在手边时常翻阅,因为总是记得不那么真切。
4、实现信息融合是智慧城市建设的核心之一。这句话是全称肯定吗?
实现城市化与信息化高度融合是智慧城市建设的核心之一随着信息技术开发应用广度和深度的不断加强,现代社会的生产生活方式已发生重大变化,感知化、网络化、数字化、智能化成为了基本特征。城市作为推动经济社会发展的重要载体,其首先受到的冲击和影响也将更深刻,尤其通过新型智慧城市的快速推进建设,逐步实现城市基础设施的感知化和智能化改造,重构以信息流为核心的城市系统,推动社会治理模式协同化发展,构建互联网化的公共服务体系,使城市深度感知、互联互通、智能改造、模式创新成为常态,促进整个城市基因和机体的蜕变,以适应信息社会的发展趋势。
我国现阶段的情况是,科技型智慧城市建设是主流,管理型智慧城市建设正在逐步展开,人文型智慧城市建设尚在研究探讨之中。
5、企业业务流程重构(Business Process Reengineering)的概念是美国麻省理工
BPR简介:BPR(Business Process Reengineering)也译为:业务流程重组、企业流程再造、是90年代由美国麻省理工学院(MIT)的计算机教授迈克尔·哈默(Michael Hammer)和CSC管理顾问公司董事长钱皮(James Champy)提出的,1993年,在他们联手著出的《公司重组—企业革命宣言》一书中,哈默和钱皮指出,200年来,人们一直遵循亚当·斯密的劳动分工的思想来建立和管理企业,即注重把工作分解为最简单和最基本的步骤;而目前应围绕这样的概念来建立和管理企业,即把工作任务重新组合到首尾一贯的工作流程中去。他们给BPR下的定义是:“为了飞跃性地改善成本、质量、服务、速度等现代企业的主要运营基础,必须对工作流程进行根本性的重新思考并彻底改革。”它的基本思想就是—必须彻底改变传统的工作方式,也就是彻底改变传统的自工业革命以来、按照分工原则把一项完整的工作分成不同部分、由各自相对独立的部门依次进行工作的工作方式。 ============================================ SWOT :SWOT分析法(也称TOWS分析法、道斯矩阵)即态势分析法,20世纪80年代初由美国旧金山大学的管理学教授韦里克提出,经常被用于企业战略制定、竞争对手分析等场合。 SWOT分析步骤 1、 确认当前的战略是什么? 2、 确认企业外部环境的变化(波特五力或者PEST) 3、 根据企业资源组合情况,确认企业的关键能力和关键限制。 4、 按照通用矩阵或类似的方式打分评价 把识别出的所有优势分成两组,分的时候以两个原则为基础:它们是与行业中潜在的机会有关,还是与潜在的威胁有关。用同样的办法把所有的劣势分成两组,一组与机会有关,另一组与威胁有关。 5、将结果在SWOT分析图上定位 或者用SWOT分析表,将刚才的优势和劣势按机会和威胁分别填入表格。 6、 战略分析 举一个科尔尼SWOT分析得出战略的例子。赞同0| 评论
6、二类电商信息流平台有哪些?
二类电商现在比一类电商都要火一些,相比于固定在某宝,某东上面,二类电版商更灵活,选品自由,可以根据季权节,旺淡季来做调整,一年四季都有产品卖,再一个就是不需要仓储,可以直接让厂家一家发货,这无形当中就节约了仓储成本。根据我这几年的运营经验来看,选品一定要选爆品,价格不能太贵,这样最容易赚钱。二类电商的广告代运营投放,找一下维心,前面8949中间84后面622
再一个成交成本就不好说了,为什么呢,因为每个产品不一样,跑的盈亏更不一样,所以他们的客单价就不样。
7、“组织重构”和“组织再造”之间在定义和内容上有何区别
企业组织重构就是对企业组织运营体系的系统性整改,包括业务流程、作业制度、部门设置、岗位设置、人员调整、支撑运营的管理制度(如绩效考核、财务制度、行政制度等)。其目的就是通过改善现有的业务流程、组织结构和制度,提高企业各环节的能力和运作标准,从而扭转与客户需求或行业标准的差距,实现二次创业的目标。
企业的组织再造就是要改变企业在工业时代构建的组织模式,充分利用信息技术手段和现代管理理念,建立符合信息时代要求的组织模式。主要包括改变企业内部层级式的组织结构、建立供应链组织和虚拟组织。企业供应链,也称企业网络,是指由同行业中具有上下游合作关系的企业组织所形成的企业群体。广义的供应链概念,则包括了从供应商到制造商、零售商和顾客整个范围,集合其共同的技术和资源,链接成垂直整合的团队以发展和配销产品,完成整个从生产到消费的过程。
8、什么是重构课堂
重构课堂是指课堂从“知识课堂”向“生命课堂”的转变,是课堂教学价值观“从单一地传递教科书上呈现的现成知识转为培养能在当代社会中主动、健康发展的一代新人”。这是一个复杂的艰巨的过程,不仅有课堂观念的转变,还有课堂方法的转变,更有课堂教学模式的转变。重构过程既要进行观念的更新,理论的批判,更要在改革中探讨和创建新的实践形态。课堂的重构就是要在批判“知识课堂”弊端的基础之上,将“生命课堂”的理念与方法渗透到课堂教学的要素活动之中。“复杂多样,变化莫测是课堂的特质,课堂是质朴的、守成的、粉饰的、思辨的、分析的、批判的、创新的、激昂的;课堂是生命火花的碰撞与展现,是情不自禁地从灵魂深处流露出不断滋润精神之园的丝丝甘泉的发源地。理想的课堂总是以理服人、以志激人、以情动人的。”这就是对“生命课堂”的描述。叶澜为课堂重建提出的口号是“把课堂还给学生,让课堂焕发生命的气息”、“把创造还给教师,让教学成为充满智慧的事业”和“把班级还给学生,让班级充满成长的气息”。郑金洲提出重构课堂应树立有关课堂的四点基本认识:第一,课堂不是教师表演的舞台,而是师生之间交往互动的舞台;第二,课堂不是对学生进行训练的场所,而是引导学生发展的场所;第三,课堂不只是传授学生知识的场所,而且更应该是探究知识的场所;第四,课堂不是教师教学行为模式化运作的场所,而是教师教育智慧充分展现的场所。
9、什么是BPR
亚当·斯密描述的别针工厂,经过分工的工人各自负责别针的一个工序,比每个工人都独自完成全过程生产的效率高几百倍。汽车业的先驱福特更改进了斯密的思想,使用生产线,把工作送到专业化工人面前。斯隆又把这种体系应用于整个企业管理。但是,由于管理过度的细化,使管理成本加大,日见膨胀的信息量和信息流通量正在成为无形的障碍,有人发现,问题不在工作本身也不在工作的人,而是在整个流程的结构。在信息技术的推动下,亚当·斯密正在成为过去,企业流程重建应运而生。
企业流程重建(Business Process Reengineering, BPR)最初于1990年由美国的Michael Hammer在“Reengineering Work:Don't Automate, But Obliterate”一文中提出。八年来,BPR正被企业界普遍接受,并象一股风潮席卷了美国和其它工业化国家。BPR被称作是“恢复美国竞争力的唯一途径”,并将“取代工业革命,使之进入重建革命的时代。”果真如此吗?诚然,不少企业的BPR项目取得了巨大的成功,但据估计,70%以上的BPR项目均归于失败。BPR不是神话,也不是洪水猛兽,而是一种新兴的管理思想,它的观点和方法对于解决我国当前企业面临的问题,或许有可借鉴之处。
首先介绍我们对BPR中文译法的看法。在目前的研究和实践群体里对前两各词(Business Process)的译法一致认同为“企业流程”,第三个词(Reengineering)有三种译法:重组、再造、和重建。我们使用“重建”的原因是:我国的许多企业正在面临企业资本或组织结构的重组,把BPR翻译成“企业流程重组”往往使人忽视“流程”,“企业流程重建”作为全新的完整概念出现,避免了歧义。另外重建与Reengineering的原意比较切合,这不是一种流程制造行为,而是一种飞跃式的建设。
1993年,Michael Hammer和James Champy在“Reengineering The Corporation”一书中对BPR做了如下定义,企业重建工程“是对企业的业务流程作根本性的思考和彻底重建”,其目的是“在成 本,质量,服务和速度等方面取得显著的改善,”使得企业能最大限度地适应以“顾客(Customer),竞争(Competition),变化(Change)”为特征的现代企业经营环境。
在这个定义中,包含四个关键特征:“显著的(dramatic),根本的(Radical),流程(Process)和重新设计(Redesign)”。 BPR追求的是一种彻底的重构,而不是追加式的改进。它要求人们在实施BPR时作这样的思考:“我们为什么要做现在的事?为什么要以现在的方式做事?”这种对企业运营方式的根本性改变,目的是追求绩效的飞跃,而不是改善。
BPR是近年国外管理界在TQM(全面质量管理)、JIT(准时生产)、WORKFLOW(工作流管理)、WORKTEAM(团队管理)、标杆管理等一系列管理理论与实践全面展开并获得成功的基础上产生的。是西方发达国家在世纪末,对已运行了100多年的专业分工细化及组织分层制的一次反思及大幅度改进。BPR主要是革企业僵化、官僚主义的命。
10、如何重构代码
先从接触过的几个老项目经历来谈谈,对于老项目来说,大家在初步接触的过程中,大多总是抱着抵触的情绪,甚至有些是蔑视。总喜欢对以前的代码挑出一大堆的问题,接着就开始抱怨代码、抱怨以前的开发人员,经过一段时间郁闷的抱怨阶段后,处于职业的责任心,就很想去改变这一切,希望把自己认为好的方式给带进来,于是接下来的工作就是重构代码了。 这也许大多数开发人员都经历过,这种经历是辛酸的(因为重构工作虽然重要,但是得不到过多的认可,目前国内关注的是可用性,对于代码质量并没有得到应有的重视),也是甜蜜的(风雨之后总会有彩虹)。对于年轻的开发人员来说,见到彩虹的过程是痛苦、漫长地。他们都是在失败中成长,这些失败除了经验外,主要是由于太急功尽力了,盲目的重构! 盲目主要体现在: 1、在还没有对系统整体架构有个清晰认识的时候,就想用自认为新的技术或架构来替换。 2、根本不分析现有系统架构或程序存在的弊端,只是一味地谈设计模式,以设计模式中固有的一套来重构(在重构中,它只作为一个参考,而不是一个依据。) 3、重构比较随性,每个版本的开发都跳出架构之外随意带入新的设计思想 这种盲目重构后给系统会带来更多问题: 你会发现当你重构完后你的系统运行效率变低了, 系统中同时存在多种思想,新加入人员更难接手, 由于你没有完全了解系统,反而在你的重构当中带来了很多重复代码, 最悲剧的是你重构后的代码也被其他人当成垃圾,而进行重构。 那么我们怎么消除盲目呢!? 首先,了解目前项目是否存在问题,存在什么问题,这些问题是否能通过重构来解决,如果能,才进行重构,你的重构时间是需要公司给的,老板不会因为你说依赖性强偶合性低就同意的,你必须要通过问题来让他认识,关键的是只有通过问题才能得到重构时间和资源,并且你的工作才能得到认可,这是一个很现实的情况。 接下来,你要确定重构的对象,是针对架构还是局部代码,并且去设定一个理想的目标(为什么是理想的?因为我们不可能一步到位,理想和现实是有差距的,但是我们要做的是尽力去往理想上靠拢)。 如果是针对架构进行重构,那么这可不是一件轻松的事情,再真正开始之前需要做到以下几点: 1、全面的了解系统的过去,包括以前的架构/技术背景、业务需求 2、分析以前架构的问题,例如:可维护性低、在哪个方面已经不满足现有需求等等 3、查看至少80%的核心代码,最好有一定时间的真实在以前代码基础上编码的经历 做到上面几点就是为了保证你能有一个清晰的认识,做到知己知彼。接下来可以进入实质阶段了吗?不行,还少了一个很重要的东西,重构计划! 这种大范围的重构,在真实情况下,一般老板给予的时间和重构真正所需用的时间相差很大,所以重构的工作是需要往后延迟的,那么就会出现又要重构又要进行新需求的开发;还有这项工作不是一个人的事情,是一个团对,既然涉及到多人合作,除了共同的目标外,还需要有一定的评审机制,这是为了保证重构的方向一致,等等,在这些因素下要做好重构,就是需要重构计划的理由。 针对局部代码进行重构来说,也许会简单的许多,不过需要注意的地方是,你一定要符合现有架构的思想,在它的范围之内去思考。 其实这种方式的重构大多就是提取方法,或者是以真实业务流程的思路去重构现有的代码执行流程,以便易于理解,或者是降低程序之间的依赖性。要做到这些有个很重要的思维方式: 1、善于从某个事物中分析出什么是事物的本质和什么是事物的外部环境。 2、从很多不同事物中去发现共同点,并对这些共同点进行抽象化(举个简单的例子:对于宝马和奥迪,你应该把他们抽象化为汽车)。 为什么这样说,因为这些能带来重构代码所需要的: 1、在写代码过程中降低了依赖性, 2、抽象化的事物复用性更强 做好上述的所有就表示重构完成了吗!不可能,这只是一个好的开始而已,我们要做到持续重构,就像敏捷中提到的。 也许有的人认为不现实,因为项目经理不会在每个版本周期内给出这个时间,其实,我就纳闷了,为什么不给?!不给的原因一定在你,如果你期望是一周或者更久,那么谁都不会同意,一周的时间都基本都能做完一个版本的设计了,重构还需要这么久,如果真的需要就说明你前期的设计很差!我所希望的时间是两天左右,因为这只局限于很小范围内的变动。 如果你们很好的做这些,那么你的项目可维护性一定很好,并且加入你的项目会是一件愉快的事情,这并不是什么理想的事情,只要你持之以恒地去做,实现起来其实很简单。 架构重构:1、重构计划代码重构:2、提取获取交集的算法3、简单、灵活地实现对象复制