開辟保護大型項意圖Java的倡議,江西會計網信息采集,半妖乳娘在線觀看,暢談羅定,電大小抄,幸存者佘子清離世,施錦標,大話腐女 陳妮,dj聯盟,億域手機,趙關克,西祠胡同網,糾紛退款,農業市場信息,瑞金市人民醫院,臨汾招考網,好看的肉肉高干文,q寵大樂斗武器怎么得,郴州招標,母猩猩一妻侍二夫,輪滑剎車,海賊王678,新城發展中心,惡魔的替補戀人,吉林在線,深圳衛視節目表,機械設計與自動化,寶雞職業技術學院,紅螺寺路線,光芒紀,洪都拉斯卷毛蜘蛛,中國致富項目網,買qq號,我的人生價值觀,深圳電視臺在線直播,工傷保險管理條例
2019/8/17 0:53:42
江西會計網信息采集,半妖乳娘在線觀看,暢談羅定,電大小抄,幸存者佘子清離世,施錦標,大話腐女 陳妮,dj聯盟,億域手機,趙關克,西祠胡同網,糾紛退款,農業市場信息,瑞金市人民醫院,臨汾招考網,好看的肉肉高干文,q寵大樂斗武器怎么得,郴州招標,母猩猩一妻侍二夫,輪滑剎車,海賊王678,新城發展中心,惡魔的替補戀人,吉林在線,深圳衛視節目表,機械設計與自動化,寶雞職業技術學院,紅螺寺路線,光芒紀,洪都拉斯卷毛蜘蛛,中國致富項目網,買qq號,我的人生價值觀,深圳電視臺在線直播,工傷保險管理條例,金馬獎2016 頒獎典禮,政治局候補委員,新安江地圖,繼往開來造句,3d玉蒲團迅雷下載,趙茂辰,干掉黑鐵矮人,相位儀,陸家嘴視頻下載,蚩尤是誰,斯琴高娃南吉,kimo,許家杰,南京審計學院錄取分數線,警壇風云第一部

  假如你是正在開辟和保護一個蘊含 2000 個類并運用了許多結構的 Java 開辟者。你要怎么了解這些代碼?在一個典范的 Java 公司名目小組中,大多數可以幫你的初級工程師看起來都很忙。文檔也很少。你需求趕快托付成績,并向名目組證實本人的才能。你會如那邊置這類情況?這篇筆墨為開端一個新項意圖 Java 開辟者供給了一些倡議。

  一、不要企圖一會兒搞懂全部名目

  好好思考一下,為何了解名目代碼是榜首位的?大多數狀況是你被需要修復一個 bug 或許增強體系已有功用。你要做的榜首件事件不是了解全部項意圖架構。當對名目停止保護時,如許(了解全部名目架構)能夠會對你形成宏大的壓力。

  即使是有著 10 年靠得住編程經歷的 Java 開辟者能夠也沒有了解項意圖中心事情機制,只管他們能夠現已在這個名目事情超越一年(假如他們并不是原始開辟職員)。比方,關于認證機制或事件辦理機制。

  他們是怎樣做的?他們關于本人擔任的局部十分理解,而且可以托付代價給小組。天天的托付代價遠比理解一些當前還一直定有無的貨色緊張的多。

  二、重視于趕快托付代價

  那我能否認了你關于名目架構了解的殷勤了么?徹底不。我僅僅需要你盡早的托付代價,一旦你開端一個名目,搭建了開辟情況,你就不該該花一兩周時刻才托付甚么,不管他的范圍巨細。假設你是一個有經歷的法式員卻兩周都沒有任何托付,你的司理怎樣會曉得你是真的在事情仍是在看新聞。

  以是托付可使各人都輕松起來。不要以為你可以做有代價的托付前必需了解全部名目。這是徹底謬誤的。加一段 javascript 的考證代碼對營業就頗有代價,司理可以經過你的托付到達對你的信賴。如答應以向下級指導證實你的奉獻以及職員代價。

  日復一日,在你一直修復 bug 及加強功用以后,就可以漸漸開端了解名目架構。不要低估對體系各個方面了解時需求破費的時刻。花3-4 天了解認證機制,2-3 天了解事物處理。這些都是依托之前的類似項意圖經驗,但關鍵仍是要花時刻才干透辟的了解。要在平常作業中擠出時刻,不要向司理需要特定的時刻來做這些。

  找找名目能否有一些一直保護的單位測驗用例。有用的單位測驗用例是了解大型名目代碼的很好方法。單位測驗可以幫忙了解代碼片斷,囊括一個單位的外部接口(單位怎么被挪用以及前往內容)及其外部完成(調試單位測驗比調試全部理論用例簡略很多)。

  你若是可以很好的了解一些內容,寫一些條記,或許畫一些類圖、時序圖、數值模子圖,以便你或往后其余的開辟者保護。

  三、保護大型名目所必需的技術

  你能處置當時的事情,一定曾經具備精良的 java 技能。咱們來談談可以讓你在新名目中精良體現的其余技術。大多數時刻,你在名目中的使命是修復 bug 和加強功用。

  有兩項很緊張的技術可以輔佐你保護大型名目代碼。

  3. 1 可以疾速發覺需求的類

  在任何保護流動中,不管是修復 bug 或加強功用,榜首個舉措那是辨認出當時修復或加強的用例中挪用的類。當你定位到需求修復或加強的類/辦法,就曾經竣工了一半。

  3. 2 可以剖析改變的作用

  當你在完結須要的批改或加強事情后,最緊張的那是要確認你的批改沒有毀壞代碼的其余局部。你要用你的 java 技能及對其余結構的了解找出改變能夠作用的局部。下面有兩個簡略的比如具體描述了末了說起的狀況:

  a)當類A的 equals ()辦法改變后,挪用一個愛護A實例的 List 的 contains ()辦法時就會被作用到。若 Java 常識不敷,很難思考到如許的作用。

  b)在一個 web 名目中,咱們假如“user id”保留在 session 中。一個新入法式員能夠在“user id”中參加一些資訊作為 bug 修復的辦法,然而卻不清楚會作用到那些相關“user id”的用例。

  當你進步了如上兩個技術,只管你對名目不是十分理解,但大多數的保護使命會變得簡略許多。若你修復一個 bug,你會定位并修復這個 bug,而且保障改變不會毀壞項意圖其余局部。若你加強或參加一個特點,根本上你只需求模擬現有的特點運用類似的描繪。

  在一個在線銀行名目中,為何“檢察賬戶擇要”和“檢察買賣前史”的描繪需求宏大的差異呢?若是你了解了“檢察賬戶擇要”的描繪,徹底可以模擬開收回“檢察買賣前史”的功用。

  就修復 bug 和加強來講,你不用徹底了解一切 2000 個類的事情內容和代碼怎么運轉來推進體系。你如有下面的技術,就能很快定位需求批改的代碼的局部,運用精良的 java 和結構技術修復,保障改變不會毀壞項意圖其余局部并托付,只管你能夠只曉得一小局部項意圖描繪。

  四、運用東西找到需求的改變內容以及改變發生的作用

  接續咱們趕快托付的主題,你該當尋覓那些可以經過盡可能少的理解名目但能幫忙你趕快施行托付的東西作為幫助。

  4. 1 疾速發覺需求改變內容的東西

  不管是修復 bug 仍是體系加強,起都城要找到該用例挪用的你需求批改的類及辦法。根本有兩種方法了解一個用例的作業方式,動態代碼剖析和運轉時剖析。

  源碼剖析計算掃描一切代碼而且展現類之間的聯系。商場上有許多設施與東西。比方:Architexa, AgileJ, UModel, Poseidon 等。

  一切的動態代碼剖析東西毛病在于無奈切當展現用例中類或辦法的運轉時挪用狀況。因而 Java 新參加了特點,如回調機制(callback patterns)。如動態剖析東西無奈揣度出當頁面上交按鈕被點擊時哪一個 Servlet 被挪用了。

  運轉時剖析東西可以展現類和辦法在用例運轉時的形態。東西囊括:MaintainJ, Diver,jSonde,Java Call Tracer 等。這些東西能夠拿獲運轉時的倉庫形態,并以此為一個用例天生序列圖和類圖。

  序列圖展現了該用例在運轉時一切挪用的辦法。若你在修復一個 bug,那這個 bug 極可能那是這些被挪用的辦法之一。

  若你在加強已有功用,應用序列圖了解挪用流程而后再批改。多是新增一個考證,批改 DAO 等。

  若你在新增功用,找到一些類似的特點,應用序列圖了解挪用流程而后模擬開辟新功用。

  要當心篩選運轉時剖析東西。資訊過量是這種東西的首要問題。挑選一些供給簡略過濾有效資訊并可以便當的檢察各類視圖的東西。

  4. 2 疾速發覺需求改變內容的東西

  若單位測驗有用,能夠經過運轉單位測驗發覺改變有無毀壞其余測驗用例。有用保護而且籠罩大型公司運用的單位測驗仍是比擬少的。下面有一些對準該狀況的東西。

  依然是有兩種技被動態代碼剖析和運轉時剖析可運用。商場中有許多動態代碼剖析東西可用。如:Lattix, Structure101, Coverity, nWire and IntelliJ"s DSM。

  給定一個改變后的類,上述東西都可辨認對該類存在依托的類的匯合。開辟者需求依據這些資訊“猜想”能夠發生作用的用例,由于這些東西無奈展現運轉時類之間的挪用聯系。

  商場上的能夠用于運轉時作用剖析的東西并未幾,除了 MaintainJ。MaintainJ 先拿獲在一個用例中挪用的一切類和辦法。當一切用例的上述資訊都被拿獲以后,就很簡單發覺類的改變對用例的作用。MaintainJ 可以有用事情的前置前提那是項意圖一切用例都該領先運轉一遍,以即可以取得運轉時的依托聯系。

  總之,今朝你在疾速精確剖析改變作用方面,仍是能夠從東西中取得有限的幫忙。起首依據需求施行一些作用剖析,而后依據本人或小組其余初級成員評定來判別改變的作用。你能夠需求下面說到的東西對你的判別停止重復確認。

  五、對上述內容的兩個忠言

  5. 1 不要低落代碼品質

  為了倏地托付,以是沒有通盤了解架構,但毫不克不及以低落代碼品質為前提。下面是一些你能夠由于只思考倏地托付而誘發的代碼品質成績。

  由于批改代碼觸及到許多的依托,以是新增代碼絕對而言危險較小。比方,有 5 個用例都挪用了某個辦法。為了改良某個用例,你需求批改這個辦法的完成。最簡略的做法那是仿制這個辦法,重定名,而后在改良的用例中挪用新辦法。萬萬不要這么做。代碼冗余相對是十分有害的。測驗對辦法停止包裝或許重寫,乃至是間接批改,而后從新測驗一切用例,凡是停上去想想,而后親自去施行,是一個比擬好的方法。

  另外一個比如是將“private”辦法改成“public”,使得此外類也能夠挪用。盡可能不要將非必需的局部暴顯露來。假設為了更好的描繪需求重構,就該當動手去做。

  大多數運用都有肯定的布局和形式來施行。修復或加強法式時,確認你沒有違背如許的形式。若對商定不愿定,請其余的初級開辟者來考核你的改變。若你必需做一些違犯信定的施行,盡可能擱置于一個范圍較小的類中(一個 200 行代碼的類中的私有函數該當不會影相運用的全體描繪)

  5. 2 不要遏制深刻了解名目架構

  依照文章列出的方法,假如你可以在對名目理解較少的狀況下停止托付并以此延續下去,能夠你會遏制對名目架構的深刻理解。如許從久遠視點來講對你的工作生活沒有協助。當你的經歷添加時,你該當承當比擬大的模塊使命。如構建一個完好的新特點或許批改項意圖一些根底描繪等較大的改良。當你可以做這些改良時,你對項意圖全體架構該當至關理解。文中羅列的辦法是讓你在最短的時刻內晉升本人,而不是禁止你完好了解全部名目。

  六、論斷

  整篇文章會合在對名目停止須要理解的條件下停止倏地托付。你能夠在不低落代碼品質的條件下這么做。

  若修復一個 bug,疾速定位并修復。有須要可運用運轉時剖析東西。若新增一個特寫,能夠尋覓類似特寫,了解流程(有須要運用東西)并編寫。

  大概這些聽起來很簡略,然而適用嗎?固然。但條件是你有精良的 java 技能以及對結構充足理解才干先批改代碼,而后對改變作用停止剖析。對改變作用的剖析比施行改變需求更多的本領。你能夠需求初級開辟職員輔佐你剖析改變作用。

  約莫有 50% 的 IT 可操縱估算用于簡略的 bug 修復和功用加強。依據文中的倡議,關于保護流動中的經費的節儉該當仍是很有協助的。

  關于作者

  作者 Choudary Kothapalli 也是 MaintainJ 項意圖樹立者。MaintainJ 名目旨在供給一款高效的 Java 保護東西,削減保護大型 Java 使用程序的本錢。而 Choudary Kothapalli 領有超越 15 年的 Java 使用程序開辟和保護經歷。

  關于 MaintainJ

  MaintainJ 是可在法式源碼缺失的狀況下運用的 Java 使用程序保護東西,經過 MaintainJ 天生的序列圖及類圖,出現 Java 目標的頭緒,有對準性地對法式停止改革與美滿。

江西會計網信息采集,半妖乳娘在線觀看,暢談羅定,電大小抄,幸存者佘子清離世,施錦標,大話腐女 陳妮,dj聯盟,億域手機,趙關克,西祠胡同網,糾紛退款,農業市場信息,瑞金市人民醫院,臨汾招考網,好看的肉肉高干文,q寵大樂斗武器怎么得,郴州招標,母猩猩一妻侍二夫,輪滑剎車,海賊王678,新城發展中心,惡魔的替補戀人,吉林在線,深圳衛視節目表,機械設計與自動化,寶雞職業技術學院,紅螺寺路線,光芒紀,洪都拉斯卷毛蜘蛛,中國致富項目網,買qq號,我的人生價值觀,深圳電視臺在線直播,工傷保險管理條例,金馬獎2016 頒獎典禮,政治局候補委員,新安江地圖,繼往開來造句,3d玉蒲團迅雷下載,趙茂辰,干掉黑鐵矮人,相位儀,陸家嘴視頻下載,蚩尤是誰,斯琴高娃南吉,kimo,許家杰,南京審計學院錄取分數線,警壇風云第一部




© 2014
爱投彩票 郸城县 | 汕尾市 | 长顺县 | 阳高县 | 宁安市 | 黄山市 | 明光市 | 五常市 | 天峻县 | 永德县 | 永丰县 | 高雄市 | 砚山县 | 富阳市 | 四会市 | 桑日县 | 布尔津县 | 米林县 | 扎鲁特旗 | 松江区 | 贵溪市 | 鄄城县 | 抚远县 | 富锦市 | 玉屏 | 鄂托克前旗 | 微博 | 安吉县 | 榆中县 | 察隅县 | 木里 | 广州市 | 丹凤县 | 久治县 | 平山县 | 彩票 | 揭东县 | 澄城县 | 苍梧县 | 来凤县 | 上犹县 | 阿图什市 | 桓台县 | 莫力 | 双柏县 | 武川县 | 南雄市 | 栾城县 | 孙吴县 | 定远县 | 图们市 | 安徽省 | 潍坊市 | 平舆县 | 清流县 | 镇平县 | 嘉善县 | 肃南 | 汾西县 | 清水河县 | 会同县 | 肇东市 | 远安县 | 博客 | 娱乐 | 梁河县 | 游戏 | 肃北 | 台中市 | 海门市 | 双辽市 | 灵丘县 | 桃园市 | 石棉县 | 汝南县 | 古田县 | 浙江省 | 桐城市 | 永登县 | 许昌县 | 鹿泉市 | 临安市 | 信丰县 | 广宁县 | 隆德县 | 四子王旗 | 新营市 | 台北县 | 壤塘县 | 阳信县 | 禹州市 | 兴国县 | 莫力 | 方山县 | 册亨县 | 南靖县 | 扶绥县 | 呼玛县 | 剑阁县 | 三河市 | 河源市 | 小金县 | 共和县 | 淮南市 | 正镶白旗 | 岳普湖县 | 赤水市 | 获嘉县 | 沅江市 | 兴宁市 | 法库县 | 永福县 | 娱乐 | 五台县 | 丰顺县 | 达日县 | 迁西县 | 海宁市 | 光泽县 | 屏南县 | 九江市 | 华容县 | 翁源县 | 定远县 | 东乌 | 宁明县 | 天门市 | 竹溪县 | 滦南县 | 信宜市 | 高邮市 | 安西县 | 和顺县 | 延津县 | 万宁市 | 拉孜县 | 故城县 | 抚远县 | 安溪县 | 江山市 | 唐海县 | 平利县 | 东安县 | 甘南县 | 凯里市 | 友谊县 | 三穗县 | 宣城市 | 华坪县 | 沽源县 | 玉溪市 | 杨浦区 | 南靖县 | 新蔡县 | 澄江县 | 米泉市 | 敦化市 | 滨州市 | 漳浦县 | 遂川县 | 祁门县 | 土默特左旗 | 新余市 | 永春县 | 克拉玛依市 | 牟定县 | 克山县 | 云南省 | 灌南县 | 汶川县 | 咸阳市 | 逊克县 | 仪征市 | 丽水市 | 如皋市 | 阳信县 | 海宁市 | 嘉义县 | 南丹县 | 连江县 | 车险 | 江西省 | 明星 | 政和县 | 南木林县 | 鄂伦春自治旗 | 嘉义市 | 盐边县 | 永年县 | 祁门县 | 建阳市 | 桐柏县 | 色达县 | 凯里市 | 深圳市 | 大竹县 | 东源县 | 安远县 | 台东市 | 凤山县 | 宿迁市 | 林西县 | 咸宁市 | 辽宁省 | 正安县 | 阿克陶县 | 临江市 | 襄樊市 | 黔西县 | 湟中县 | 云阳县 | 乐亭县 | 新巴尔虎左旗 | 囊谦县 | 萨嘎县 | 高安市 | 襄樊市 | 梧州市 | 荃湾区 | 蓬安县 | 和顺县 | 济阳县 | 扶绥县 | 朔州市 | 温州市 | 武穴市 | 鹤壁市 | 岑巩县 | 衡山县 | 五寨县 | 延川县 | 澄迈县 | 汉中市 | 泗水县 | 张家口市 | 黄平县 | 洛宁县 | 建昌县 | 衡阳市 | 天柱县 | 香河县 | 无为县 | 星座 | 丰原市 | 德保县 | 兖州市 | 万山特区 | 邹城市 | 新田县 | 岳阳市 | 佛冈县 |