程序员的职业素养。The Clean Coder 读书笔记2

书写图来自Pixabay

2017年最后一周到,我仍计划把《The Clean Coder》读了了,大约100页左右。

免思变成好程序员的码农,那和鲍鱼有啊分别?李清照有句诗:生当作人杰,死也为鬼雄。也许我们不用、也可能永远都无见面是最为妙之程序员,但我们起码得变成平等叫做职业的程序员。我们呢想变成平等叫专业人士

第6章 练习

立马同一段的始末是专业人士如何刻意练习。Bob大叔提到40年来他利用的微机综合性能(内存硬盘容量和进度,显示分辨率的升级换代;提及能消耗价格抵的压缩)提升了10底22破方倍,但是其实计算机程序的庐山真面目并从未转,是可以通过有些基础程序的习来不断晋升自己之技艺的。为了吃22次方更像,Bob大叔用了一个乔布斯时用底技能,把她换成人可以掌握的旁东西:是从此处到半人马栋阿尔法星的相距(以埃为单位),是1美元硬币里之电子数,是地质量和私家品质的百分比。

今天,编译不再用程序员等待。现在依旧有些程序员必须待构建,这是悲剧,也是休敷细致的预兆。如今,构建时间应当据此秒来衡量,而休是分钟,更非是时。

构建时间这么细节的题目体现了专业性,比如前段时间大家关心解决的flex编译时间之题目,只是透过提请重新好之机器便拿任何项目的编译时间自90分钟压缩至20分钟,这应该是极方便的投资了。不过还无达成Bob大叔说的秒级构建的品位,这里还有更为升级的空间,但是呢用来专业人士的投入才行,需要上及尝试下flex的增量编译框架fcsh和flex编译支持maven的家伙flexmojos,也许会发生帮助。

对于练习方式,作者给起了几种样式,一些操演套路,可以尝尝以商店里计划相关的教程。

Chapter 1. 专业主义

卡塔

以武里,卡塔是一致仿设计好之、用来法打斗一方的招式。与的接近,编程卡塔也是身敲击键盘与鼠标的动作,用来模拟编程问题之缓解进程。联系在不是以解决真正的题目,因为若曾清楚了解决方案。相反,你是以操练解决此问题所欲之动作和决策。

编程卡塔的最终目标,也是逐日练习以达成炉火纯青。反复的习会训练大脑与手指如何动作与影响。在不停练习当众,你可能会发觉动作之微薄进步,或者解决问题效率的增幅升级。

一经学习热键和导航操作,以及测试驱动开发、持续集成之类的措施,找满的卡塔来练习都是一定实惠之。

Bob大叔被起了有些卡塔,参考网站http://codekata.pragprog.com,其中包括在《ASD》中给出的保龄球计分程序。今年后备教练训练营的TDD作业,我做的就是这个BowlingGame的程序。

诚的挑战是管一个卡塔练习到炉火纯青,你可发现其中的韵律。要完成就同样接触而免轻。

作同一称“专业人士”,不仅仅是相同栽光荣,它又多之表示义务,正所谓用戴王冠,必承其重。当型受到生出某个“临时工”犯了错,他大可不必承担责任,只需要摊摊手,说几句自我安慰的语;如果是“职业”人员,你不能不为和谐写的各一行代码负责,出了bug必须承受相应的义务。
“职业”的程序员也应该有协调之职业道德,Bob大叔把其包括为以下8点:

瓦萨

瓦萨基本得以说凡是有限独人口之卡塔。其中的招式需要规范地记得,反复彩排。一个口靠责攻,另一个丁负担守。攻守双方互换时,各种动作要平等假如更、再而三地数。

程序员可以据此同样栽让“乒乓”的嬉戏来拓展类似之操练:两单人口挑选一个卡塔,或者一个简问题,一个丁写单元测试,另一个总人口形容程序通过单元测试,然后换成角色。

随机练习

擅自练习就是免限量形式之搏击。模拟打斗与编程并无是特意贴合。不过,很多编程练习场中还见面玩同样种叫做“自由练习”的游乐。它挺像由少单参与者解决问题之瓦萨,只是随意练习是生广大人口踏足的,而且规则是可持续的。在自由练习中,屏幕被投影至墙上,一个人数写测试,然后盖下来,另一个人口写程序通过测试,再写下一个测试。桌子边的丁一个个轮岗接下,或者发趣味之总人口得以协调排队到。无论怎么布局,都是挺有趣的。

上面立三种办法,无一不是以TDD的办法展开,和达标亦然段的内容可。另外还有以业余时间参与开源社区,也是推荐的操练方法,总之,专业人士需要持续的演习。

好歹,专业人士都急需练习。他们这样做,是因它们关心自己能够好的绝好结果。更主要的凡,他们因此自己之日子练习,因为它知道保持好之技能不落伍是团结的权责,而未是雇主的责任。练习的时光你是致富不交钱之,但是练过后,你晤面赢得回报,而且是极富的回报。

  • 询问您的天地
  • 坚持不懈上学
  • 练习
  • 合作
  • 辅导
  • 刺探工作领域
  • 暨雇主/客户保持一致
  • 谦逊

第7章节  验收测试

Bob大叔举了一个及业务人员一起为不断探索之不二法门写应用程序的例证,并总结了有的经历。其实是再次同次等阐述了高效的一些谱,强调转变是必然会有的,过早精细化是不必要的,业务方自己很可能并不知道自己如果什么。应对方式是缓精细化,用验收测试驱动开发。验收测试要自动化。几年前测试团队做了有关的品,当时看以验收自动化测试高达投入产生硌高,没有继承开展下,2018年是休是得更尝试一下,改变一下PO和BA的劳作方式?

Chapter 2. Say No

验收测试和单元测试

验收测试是摹写为业务方看的,单元测试是描写个程序员的,它们并无又。它们的第一力量实在不是测试,测试只有是专属功能。它们首先是文档,其次才是测试。

专职之程序员敢于与实际斗争,敢于说“不”。尤达说罢:“能就是力所能及,不能够便是未克。不要说‘试试看’”。如果某个起职责而无法胜任,拒绝接受总比临近交付日期才告诉产品经理你无法形成好;同样的,如果无道于某个时间内到位,就甭说“试试看”。试试看意味着你见面尝试在去得,而大多数总人口都是乐观主义者,这样说一样于平种承诺。碍于情面的口可能觉得不妥,需要指出的凡:“say
no”
并无意味着拒绝合作,而且为组织另行好之升华。

图形界面的测试

此处涉及了添ID和支行测试服务少种植艺术,都是原先都尝试过的,关键是如找到项目实际的落地。

Chapter 3. Say Yes

连发集成

这边要涉及的凡络绎不绝集成的纪律,集成失败必须及时修复,这是优先级最高的事体。实际做起来是得公民意识及之更动的。

若您道“say no”给你十分麻烦啊情,那么,“say
yes”
(做出承诺)也不行有挑战性。做出承诺包含了三个步骤:

第8章 测试策略

“QA应该找不交其他错误”,这是本着专业人士的渴求。QA的主要职责不是意识程序员的失实,保证程序没有错是程序员自己之任务。那QA做呀?

QA于团队受到假如去的是急需则定义者(specifier)和特色描述者(characterizer)。

要求则定义者:QA的职责是暨业务人员一起创办自动化验收测试,作为系统真正的需要则文档。

特色描述者:QA的其他一样桩任务是按部就班探索式测试的规则,描述系统运行着之真实情况,将的反映让开发人员和业务人员。在这项任务中,QA并没有解析需求,而是以识别系统的真实情况。

  • 口头上说祥和拿会去举行
  • 心里认真相比做出的答应
  • 真付诸行动

自动化测试金字塔

标准开发人员遵循测试驱动开发的渴求来创造单元测试。专业开发组织利用验收测试定义系统要求,使用持续集成保证质量稳步提升;同时,这些测试又属于全局测试网。拥有同样学单元测试和验收测试的又,还亟需出更强层次之测试,这样QA才找不发生另不当。

Bob大叔被出了五交汇的自动化测试金字塔,和我们常常见到底老三层的金字塔不太一样,从下到上依次是:单元测试、组件测试、集成测试、系统测试、人工探索式测试。

单元测试是程序员自己编辑好行使,并且使就类似100%底覆盖率,通常以90%以上,并且是实际的覆盖率,而休是那种虽然能够透过但连无关注运行结果的左的单元测试。

组件测试和合并测试都是指向API进行的测试。组件测试针对单个组件,集成测试针对多单零件。组件测试由QA和业务人员编写,开发人员提供救助。常用之家伙是FitNesse,
JBehave,
Cucumber。针对GUI的是Selenium或Watir等工具。组件测试要覆盖差不多系统的一半,主要是成路。异常路径是如因单元测试来掩盖的。集成测试主要针对大型系统,是编排性测试,主要不是测试工作规则,而是测试组件装配在一起时是不是和谐。集成测试一般由网架构师或预示设计师来修,用于确认系架构层面的结构是否对无误。集成测试时间运作比较丰富,一般不会见当频频集成的同样片。

系测试大约占用测试的10%,由系统架构师和技能官员编写,一般是当GUI层次。

人工探索性测试不是自动化测试,它用采取人类的创新能力,对网进行深入研讨与探索。预先编写测试计划反而会减这好像测试的功效。可以设想有老百姓“抓虫”行动。覆盖率不是革命性测试的对象。

“职业之”程序员对协调做出的应允会就言必行,行必果,甚至负相应的责任,职场上可以允许随便说说而已。

结论

TDD、验收测试这些构成起来,最终目标还是叫QA找不顶外错误。

Chapter 4. 编码

第9章节 时间管理

“职业的”程序员应该享有优异的编码能力。代码要干净、符合规范,特别是在赶进度的景象下。Bob大叔在《Clean
Code》(《代码的干净的志》)中说交,一个外科医生不见面因为日子燃眉之急而应病人的伸手——不要洗手就是召开手术,因为这么连无是差之做法(更别说犯罪)。同样地,职业之程序员不见面为时紧就描写起混乱的代码或者多实施代码的函数,这样说不上快,只会受进度更加慢。整洁的代码也待从平常持续的训养成,这点的开发《The
Art of Readable Code》、Bob大叔的《Clean Code》、《Code Complete》。

会议

至于会议,有个别修真理:

(1)会议是必备的;

(2)会议浪费了大气年华。

便,两长真理而适用于同一场会议。有些与会者认为当下点儿修总结得格外好,有些则觉得其是是的废话。

公待为和谐的时间负责,所以您要选择什么会出席什么会不与。Bob大叔提到Scrum的季会晤之问题,相关内容应该可以参见Scrum相关书籍。

Chapter 5. 测试

争论/反对

Kent
Beck都报我一个浓厚的道理:“凡从事非可知当5分钟内解决之争执,都未可知依赖辩论解决。”

若果争论得解决,就应该要求争论各方于5分钟时间外于大家摆明问题,然后大家投票。这样,整个会议花费的年华未会见过15分钟。

Bob大叔的题有一个特色(虽然本人独自拘留罢一点儿本…),他会晤在不注意中特地地栽测试点的情。看他的题都见面对TDD有得之打听,此处有些去n个字……
甭管是否使用TDD的艺术,“职业之”程序员都须具有自然的测试能力。最为开发人员,写的无限多就是单元测试,虽然单元测试不可知担保程序一定不差,但是写好的单测是对友好代码负责之平等种体现。如果代码没有测试了就签入代码库,无异于放上一个定时炸弹。《Code
Complete》里面介绍了部分方,可以以形容更少量之无非测的场面下盖到又多之代码,例如结构化的底蕴测试。

注意力点数

本凡独什么样快注意力的时日,每个人最难得之资源就是注意力,谁抢到还多之注意力就能够赚。如何保障注意力?

第一要确保睡眠。Bob大叔每晚要睡7钟头。年初时有发生几独月我已经每晚睡眠5小时,想多争取把时日工作以及上,靠每天早起的咖啡来支撑,后来发现自己有硌扛不停止,就尽可能向7钟头睡眠靠了。前阵子听樊登说《睡眠革命》,一个睡觉周期时是1.5钟头,如果以上床周期中给闹醒,则整天都见面吃影响,所以睡眠时最好是1.5小时的整数倍增,一健全累积睡到35单周期即没有问题。正在尝试被,貌似很有道理。

肌肉注意力。体力活动需肌肉注意力,编程需要心智注意力,两者的渴求无一致。不过定期训练肌肉注意力可以升级心智注意力的上限。Bob大叔的做法是骑车单车1-2时,大约30-50km,骑车的时光可听播客或者音乐。我要好深爱慢跑的,周六的早缓缓跑听书是平栽享受,也是千篇一律种植放松。不过进入冬季雾霾再度了不畏不曾怎么跑了。不过当爱人做来俯卧撑也特别有补。

Chapter 6. 预估

时拆分和番茄工作法

番茄工作法自于是了一段时间,有时经常于死或者自己心心没法静下来;有时又看25分钟时间接近有些短,专注的做一样宗工作时刚进入状态,番茄就收了。看到一些文章说番茄时设置成1钟头比较好。不过仍Bob大叔前面的布道,其实进入心流状态并无是非常好。也许25分钟的番茄钟就是特别对的。

假设避免的作为是优先级错乱,或者不遵循事先级依次来拍卖,这个事情在我身上也时不时有,明明知道出个事情是重要的,但连接拖到最后一刻才做,把温馨逼到死角,搞得深糊涂。

西红柿时吧急需回顾,感觉番茄工作法就是一个丁的Scrum。我本着团结之追思就是对于每项工作的预估时间或时常偏乐观,也许是以自己生完美主义的赞同。这个与高效的笔触并无绝配合,造成自己效率不高,需要调整。

软件开发过程中最为常并发的题材就是推交付,因为快延期往往导致开发人员需要连接的加班,甚至彻夜的等到进度,而以此日子很多时段都是由于品种组过于乐观的预估。

穷途末路和泥潭

穷途末路:比如选择了走不通的技艺道路,越是坚持浪费之日子越来越多。要记得,任何时刻都生取舍。

坑法则:如果您少进了坑里,别打。

较死胡同更不好之凡泥潭。泥潭会减慢速度,但切莫见面被你彻底停止下来。但如若你若尽全力,你仍可博得进展。

故此说泥潭比死胡同更累,是坐在泥塘中,你依旧可见见发展的征途,而且看起总是比回头路如果短(虽然事实上不是如此)。

眼看片单道理一样看即亮,可以怎么识别哪些是死胡同,哪些是泥潭,哪些是索要咬牙好过去的吗?感觉要大智慧才行啊。

  • 时间预估——三元分析法
    其三长分析法是1957年美国海军的潜艇极地航行计划遭遇之同样片段内容,是同一种对预估的计算方式,这种技能简单而中,把预估变成概率分布。你可重具有三个数字预估有起职责:

    • O:乐观预估。这是坏开朗的数字,也就算是咱常常说之无限抢时,快至程序尚未大,开发过程中未会见出岔。实际上,为了保乐观预估有意义,这个数字对应之票房价值应当小于1%(正常分布下实际数字是3单西格玛或者0.13%)。
    • N:标称预估。这个数字概率最酷。如果打一摆设柱状图,标称预估就是参天的不胜。
    • P:悲观预估。这是绝糟糕的数字,因为它们考虑到各种奇怪,比如飓风啊,战争啊。为了确保这个数字来义,它的票房价值为应小于1%。

    发生矣以上三独预估,我们得以如此描述概率分布:
    μ = (O+4N+P)/ 6
    μ 是职责之冀望成功时。
    σ = (P – O)/ 6
    σ
    是职责之概率分布的专业不一,用来衡量不明了。数字格外就是代表特别勿确定。
    就此同样起职责之预估时间尽管是 μ/σ 。

第10章 预估

预估是软件开发人员给的绝简易、也是无与伦比吓人的倒有了。

Chapter 7. 压力

许和预估

承诺是家喻户晓的,必须要做到,其他人会依据你的诺制定计划。不能够兑现的许诺是一模一样种诈骗。

预估是如出一辙种植猜想,预估错误无关声誉。

自我记忆Steve
McConnell的《快速软件开发》中有过描述,预估总是会受出个别单价值,要么是一个间隔范围,要么是一个价与几率,而应就只是出一个价值。糟糕之是咱于起底多数预估都见面受领导当成承诺,因为我们于预估时多次就叫出一个价值。

专门提一点,按照我们做到任务之时长绘制有直方图,大致上是吻合韦伯分布的,而无是正态分布。从我司的襟怀数据可以见到这或多或少。如果起明显不切合韦伯分布之曲线,要么说明任务粒度差异比较异常,要么说明这里在显著的挺,需要关爱一下。

常用之预估方法,都是PMBOK中的文化:三碰学、DELPHI法等。计划扑克就是千篇一律栽DEPLHI法。

关于软件估算,McConnell专门写了扳平本书,可惜没有投入时间仔细读了。从更来拘禁,多人齐拍首做类比估算是比靠谱的,在PMBOK中称专家判断。目前业界的趋向应是运力量点措施或者快速功能点主意,感觉那实质也是相近比较估算,不过是依据大数目的接近比较估算,最中心之事物是那个积累的许多的花色数目信息。

书写中生同一段子描述:

第11章 压力

虽出压力,专业开发人员也会见无人问津毅然。尽管压力持续增大,他仍旧会坚守所吃之训练以及纪律,他明白这些是外凭借战胜由最后期限和诺锁带来的压力感的最好点子。

本章前面讲述了Bob大叔自己担负压力和他的回答办法。确实当他40年之软件生涯被,什么还赶上过了。有趣味就看原书吧。

而瞧瞧好睡在平等摆放手术台上,以为外科医生给你开开胸手术。医生全力挽救你的生命,但是时间有限……
你愿意医生的见怎么样?你盼他冷静、井井有条吗?你要他解准确地命令助手为?你希望他严厉遵循当初训练时的做法坚守手术规程吗?
还是想为他汗流浃背、咒骂的誉持续?想给他乱丢弃手术器械、把东西坏的哐当响也?想让他满腹怨气责怪管理人员设定的无现实的手术时间,一直嚷嚷时间未足够用吗?你期望他展现得如相同称作专业人士,还是像咱周边的少数开发人员的那种做派?

维持整洁

快捷腾飞确保最后期限的方法,便是保干净。专业人士不见面为了快点前进而混来。他们掌握“快而污染”是于相矛盾的传教。脏乱只会招慢性!

据悉经验和自己要好之理解,如果工作总是在过渡中,可以找到下一样各项“接盘侠”,那么大家在工作中保持专业性的可能性就见面大大降低。以前我维护的顺序,我知发生了问题还设团结失去解决,没有其他人可以凭借,所以为了让投机维护与理解程序的负责轻有,所以我会把装有曾经解的题目都花时清除掉,这样在碰到题目时自就算未会见分心去考虑这些早已领略之题材。已清楚的题目概括编译器检查出底装有告警,要么通过改动代码消除掉隐患,要么自己要是坚信理解了编译器告警的故,并且明确这是无害的。事实证明这个的确管用,我特别啊自己原先维护了之次序的祥和与代码质量自豪。

正确,那时自己还无明了Clean
Code和TDD,不然我必为以和谐维护的代码中开展实施。

至于压力,最好的做法就是避压力:

危机受到之纪律

观测自己于危机时刻被之反响,就可以了解自己之信心。如果当危机受到还以着您守持的纪律,就认证您实在相信那些纪律。反过来说,如果以危机中改行为,就说明你连无真的相信常规行为受到的法。

设若以非危机时刻你见面照测试驱动开发之纪律,但是在危机时刻你放弃了这种做法,就证明你连无真的相信TDD是发帮助的。如果当平凡上你晤面专注保持代码整洁,但在危机时刻你却会并发混乱的代码,就说明你连无确实相信混乱会导致速度降。如果以危机时刻你见面结对工作,但平常倒未结对,就说明你相信结对工作比不结对更有效率。

Bob大叔已经说得异常鲜明了,我完全赞成。意识不顶混乱会导致速度降,也许是以还无适度的气量方式给大家发现及这或多或少。想起CMMI顾问魏先生已经让了之一个建议:比方商家无为修复程序故障支付酬金,或者只有出固定比例之待遇,也许对咱们的提交质量升级会发生较充分的促进作用。

  • 许:不要轻易做出承诺,承诺的时段吗要是科学地预估,避免超负荷乐观。
  • 维持整洁:快速上扬确保最后时限的计就是维系整洁。专业人士不会见以快点儿乱来。“快速而污染乱”是由相抵触的传教。
  • 危机受到之纪律:Bob大叔说过,观察自己以危机时刻被的反响就是好了解自己之信心。如果当危机受到还是以你守持的纪律,就印证你真相信那些纪律。选择那些你当危机中仍会依照的纪律规范,并且以颇具工作屡遭还守这些纪律。遵守这些纪律规范是免陷入危机的最好好途径。

许针对压力

1:不要慌张;2:沟通;3:依靠你的纪律规范;4:寻求援助。

假使压力一度发,不可避免的,“职业”的做法是永不惊慌,而是从容不强求、努力寻找解决方案,同时寻求支援。

第12章 协作

程序员正是为不善于跟食指打交道,喜欢和机械打交道才选了此事情。Bob大叔从程序员与雇主,程序员和程序员两单方面讨论了合作的题材,并且以是用好亲身经历来说法。曾经他做过独行侠,忽略了雇主及商家利益,惨遭解雇的故事。这有简易好亮,但很有不容忽视作用,值得读一下。

Chapter 8. 协作

第13章节 团队以及种类

大部软件还是依靠集体开发出来的,单打独斗与游离于组织之外都是未标准的见。即使是Linus
Torvalds这种单兵作战能力越强的,也待同积好程序员来帮衬维护Linux。想象一下deadline到来前你并线了命赶进度,恨不得几近摸几单人口来助,这时候若是意志力的深信组织开是规则的。那怎么平时可非愿意相信?
经合主要发生半点接触:

产生凝聚力的集体

多变集体要时日。团队成员用首先成立关联。他们待学习怎么相互合作,需要了解彼此的喜好、强项、弱项,最终,才能够凝聚成集团。

生凝聚力的团真的发若干神奇的远在。他们能够联合创建奇迹。

发凝聚力的团体通常发生大约12名为成员。由12私有组成的可观团队,人员配备情况是这样的:7名程序员、2名测试人员、2称分析师和1称项目经理。

斯集团规模不合乎5-9人口之准,不过可能平常我们是觉得分析师(BA)和项目经理(PM)是团体客之口,算起来为基本上。这个层面多也是咱原先一个科室的面,确实感到非常科学。记得团队当解散的时段科室同事在铺论坛及留下一个帖子:“钢七连要解散了,实名留念”。我叫他人叫“七连长”(参考《士兵突击》),感觉这是自身十几年工作生涯蒙取得过的危褒奖。

集团和种类,何者为优先?

准备围绕项目来构建团队是一样栽傻乎乎的做法。按照这种做法,团队永恒都不可能形成凝聚力。

规范的开销组织会将种分配给业已形成凝聚力的集体,而休见面围绕着种类来组建团队。一个有凝聚力的团伙会又承载多单门类,根据成员分别的意思、技能及能力来分配工作,会顺利完成项目。

  • 暨开发人员的合作:这要求我们随规范写好代码、注释和文档,便于其他程序员更快理解。这为要求程序员要发出美妙的表达能力和写作能力。Joel
    Spolsky在《软件随想录》中为计算机系学生的建议遭到,第一长达就算是:毕业前练好做。
  • 暨雇主的搭档:代码应该是以工作服务,有的开发人员只了解为开发便民,随意的砍需求,或者想发生部分不切实际的想法。所以Joel的建议(3)是:毕业前学好微观经济学。

结论

团比较种再度难构建。因此,组建稳健的团伙,让集体于一个并且一个项目遭到总体走并工作是于好之做法。并且,团队也足以而且承载多只项目。在组建团队时,要致团队丰富的时,让她们形成凝聚力,一直同工作,成为持续交付项目之强引擎。

第14章 辅导、学徒期与技能

立是全书的最后一章节(不算是附录,附录说的凡工具,和人无关),Bob大叔用自己的成人更做了单总结,表达了对该校规范教学的失望,认为学校的启蒙并不曾能叫会生编程,真正的编程是在工作中学习和推敲出的。这个确实是现状,可能当炎黄及美国还是看似的场面,我自认自己仅仅是独中等水平的程序员,这个力量水平为是在干活以后读了片题做了一部分履之后收获的,刚毕业的下真特别渣。


Bob大叔是雪鸟会议的发起者,某种意义上说好认为是全速宣言之大,他而为是软件工艺运动的推者,他于是这本小开向我们阐述了哪为专业人士,以及哪成为专业人士,为他的标准精神所伏,推荐程序员都念一读,然后不再自称“码农”。

死欣喜好于少完美内读毕了千篇一律本书,并且这也是唯一一按我形容了了读后谢的题,感谢Bob大叔的精简。

对了,其实还有最后之附录工具没有写,里面涉及了布置管理工具svn/git,代码编辑器IDE,持续集成工具,问题跟工具,自动化测试工具等,提供的都是最好理想的挑项,值得学习和参照。


自我是发出底线的

admin

网站地图xml地图