日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

系统困境与软件复杂度,为什么我们的系统会如此复杂

發(fā)布時間:2024/8/23 windows 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统困境与软件复杂度,为什么我们的系统会如此复杂 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介:讀 A Philosophy of Software Design 有感,軟件設(shè)計(jì)與架構(gòu)復(fù)雜度,你是戰(zhàn)術(shù)龍卷風(fēng)嗎?

作者 | 聶曉龍(率鴿)
來源 | 阿里技術(shù)公眾號

讀 A Philosophy of Software Design 有感,軟件設(shè)計(jì)與架構(gòu)復(fù)雜度,你是戰(zhàn)術(shù)龍卷風(fēng)嗎?

一 前言

有一天,一個醫(yī)生和一個土木工程師在一起爭論“誰是世界上最古老的職業(yè)”。醫(yī)生說:“上帝用亞當(dāng)?shù)睦吖窃斐隽讼耐?#xff0c;這是歷史上第一次外科手術(shù),所以最古老的職業(yè)應(yīng)該是醫(yī)生”,土木工程師說:“在創(chuàng)世紀(jì)之前,上帝從混沌中創(chuàng)造了天堂與人間,這是更早之前的一次土木作業(yè),所以最古老的職業(yè)應(yīng)該是土木工程”。這時軟件工程師拖著鍵盤走出來說,“那你認(rèn)為,是誰創(chuàng)造了那片混沌?”

建筑師不會輕易給100層的高樓增加一個地下室,但我們卻經(jīng)常在干這樣的事,并且總有人會對你說,“這個需求很簡單”。到土里埋個地雷,這確實(shí)不復(fù)雜,但我們往往面臨的真實(shí)場景其實(shí)是:“在這片雷區(qū)里加一個雷”,而雷區(qū)里哪里有雷,任何人都不知道 。

二 什么是復(fù)雜性

我們一直在說系統(tǒng)很復(fù)雜,那到底什么是復(fù)雜性?關(guān)于復(fù)雜的定義有很多種,其中比較有代表的是Thomas J. McCabe 在1976提出的理性派的復(fù)雜性度量,與John Ousterhout 教授提出的感性派的復(fù)雜性認(rèn)知。

1 理性度量

復(fù)雜性并不是什么新概念,早在上世紀(jì)70年代,軟件就已經(jīng)極其復(fù)雜,開發(fā)與維護(hù)的成本都非常高。1976年McCabe&Associates公司開始對軟件進(jìn)行結(jié)構(gòu)測試,并提出了McCabe Cyclomatic Complexity Metric,我們也稱之為McCabe圈復(fù)雜度。它通過多個維度來度量軟件的復(fù)雜度,從而判斷軟件當(dāng)前的開發(fā)/維護(hù)成本。

2 感性認(rèn)知

復(fù)雜度高的代碼一定不是好代碼,但復(fù)雜度低的也不一定就是好代碼。John Ousterhout教授認(rèn)為軟件的復(fù)雜性相對理性的分析,可能更偏感性的認(rèn)知。

Complexity is anything that makes software hard to understand or to modify
-- John Ousterhout 《A Philosophy of Software Design》
譯:所謂復(fù)雜性,就是任何使得軟件難于理解和修改的因素。

50年后的今天,John Ousterhout教授在 A Philosophy of Software Design 書中提到了一個非常主觀的見解,復(fù)雜性就是任何使得軟件難于理解和修改的因素。

模糊性與依賴性是引起復(fù)雜性的2個主要因素,模糊性產(chǎn)生了最直接的復(fù)雜度,讓我們很難讀懂代碼真正想表達(dá)的含義,無法讀懂這些代碼,也就意味著我們更難去改變它。而依賴性又導(dǎo)致了復(fù)雜性不斷傳遞,不斷外溢的復(fù)雜性最終導(dǎo)致系統(tǒng)的無限腐化,一旦代碼變成意大利面條,幾乎不可能修復(fù),成本將成指數(shù)倍增長。

三 復(fù)雜性的表現(xiàn)形式

復(fù)雜的系統(tǒng)往往也有一些非常明顯的特征,John教授將它抽象為變更放大(Change amplification)、認(rèn)知負(fù)荷(Cognitive load)與未知的未知(Unknown unknowns)這3類。當(dāng)我們的系統(tǒng)出現(xiàn)這3個特征,說明我們的系統(tǒng)已經(jīng)開始逐漸變得復(fù)雜了。

癥狀1-變更放大

Change amplification: a seemingly simple change requires code modifications in many different places.
-- John Ousterhout 《A Philosophy of Software Design》
譯:看似簡單的變更需要在許多不同地方進(jìn)行代碼修改。

變更放大(Change amplification)指得是看似簡單的變更需要在許多不同地方進(jìn)行代碼修改。比較典型的代表是Ctrl-CV式代碼開發(fā),領(lǐng)域模型缺少內(nèi)聚與收攏,當(dāng)需要對某段業(yè)務(wù)進(jìn)行調(diào)整時,需要改動多個模塊以適應(yīng)業(yè)務(wù)的發(fā)展。

/*** 銷售撿入客戶*/ public void pick(String salesId, String customerId) { // 查詢客戶總數(shù) long customerCnt = customerDao.findCustomerCount(salesId); // 查詢銷售庫容 long capacity = capacityDao.findSalesCapacity(salesId); // 判斷是否超額 if(customerCnt >= capacity) { throws new BizException("capacity over limit");} // 代碼省略 do customer pick }

在CRM領(lǐng)域,銷售撿入客戶時需要進(jìn)行庫容判斷,這段代碼也確實(shí)可以滿足需求。但隨著業(yè)務(wù)的發(fā)展,簽約的客戶要調(diào)整為不占庫容。而客戶除了銷售撿入,還包括主管分發(fā)、leads分發(fā)、手工錄入、數(shù)據(jù)采買等多個場景,如果沒對庫容域做模型的收攏,一個簡單的邏輯調(diào)整,就需要我們在多個場景做適配才能滿足訴求。

癥狀2-認(rèn)知負(fù)荷

Cognitive load: how much a developer needs to know in order to complete a task.
-- John Ousterhout 《A Philosophy of Software Design》
譯:開發(fā)人員需要多少知識才能完成一項(xiàng)任務(wù)。

認(rèn)知負(fù)荷(Cognitive load)是指開發(fā)人員需要多少知識才能完成一項(xiàng)任務(wù)。使用功能性框架時,我們希望它操作簡單,部署復(fù)雜系統(tǒng)時,我們希望它架構(gòu)清晰,其實(shí)都是降低一項(xiàng)任務(wù)所需的成本。盲目的追求高端技術(shù),設(shè)計(jì)復(fù)雜系統(tǒng),增加學(xué)習(xí)與理解成本都屬于本末倒置的一種。

TMF是整個星環(huán)的支柱,也是業(yè)務(wù)中臺面向可復(fù)用可擴(kuò)展架構(gòu)的核心。但TMF太過復(fù)雜,認(rèn)知與學(xué)習(xí)成本非常高,我們?nèi)粘V兴媾R的一些擴(kuò)展訴求99%(或者應(yīng)該說100%)都不適合TMF,可能通過一些設(shè)計(jì)模式或者就是一些if else,可能更適合解決我們的問題。

除此之外,還包括一些簡單搜索場景卻用到了blink等流式引擎,簡單后臺系統(tǒng)通過DDD進(jìn)行構(gòu)建,幾個商品發(fā)布的狀態(tài)機(jī)轉(zhuǎn)換用上了規(guī)則引擎等等,都屬于認(rèn)知負(fù)荷復(fù)雜度的一種。

癥狀3-未知的未知

Unknown unknowns: it is not obvious which pieces of code must be modified to complete a task
-- John Ousterhout 《A Philosophy of Software Design》
譯:必須修改哪些代碼才能完成任務(wù)。

未知的未知(Unknown unknowns)是指必須修改哪些代碼才能完成任務(wù),或者說開發(fā)人員必須獲得哪些信息才能成功地執(zhí)行任務(wù)。這一項(xiàng)也是John Ousterhout教授認(rèn)為復(fù)雜性中最糟糕的一個表現(xiàn)形式。

當(dāng)你維護(hù)一個有20年歷史的項(xiàng)目時,這種問題的出來相對而言就沒那么意外。由于代碼的混亂與文檔的缺失,導(dǎo)致你無法掌控一個500萬行代碼的應(yīng)用,并且代碼本身也沒有明顯表現(xiàn)出它們應(yīng)該要闡述的內(nèi)容。這時“未知的未知”出現(xiàn)了,你不知道改動的這行代碼是否能讓程序正常運(yùn)轉(zhuǎn),也不知道這行代碼的改動是否又會引發(fā)新的問題。這時候我們發(fā)現(xiàn),那些“上帝類”真的就只有上帝能拯救了。

四 為什么會產(chǎn)生復(fù)雜性

那軟件為什么越來越復(fù)雜,是不是減少一些犯錯就能避免一場浩劫呢?回顧那些復(fù)雜的系統(tǒng),我們可以找到很多因素導(dǎo)致系統(tǒng)腐化。

  • 想簡單圖省事,沒有及時治理不合理的內(nèi)容
  • 缺少匠心追求,對骯臟代碼視而不見
  • 技術(shù)能力不夠,無法應(yīng)對復(fù)雜系統(tǒng)
  • 交接過渡缺失,三無產(chǎn)品幾乎無法維護(hù)
  • 除了上述內(nèi)容外,還可以想到很多理由。但我們發(fā)現(xiàn)他們好像有一個共同的指向點(diǎn) - 軟件工程師,似乎所有復(fù)雜的源頭就是軟件工程師的不合格導(dǎo)致,所以其實(shí)一些罪惡的根因是我們自己?

    1 統(tǒng)一的中國與分裂的歐洲

    歐洲大陸面積大體與中國相當(dāng),但為什么歐洲是分裂的,而中國是統(tǒng)一的。有人說他們文化不一樣,也有人說他們語言不通是主要原因,也有人說他們?nèi)币粋€秦始皇。其實(shí)我們回顧歐洲的歷史,歐洲還真不缺一個大一統(tǒng)的帝國。羅馬帝國曾經(jīng)讓地中海成為自己的內(nèi)海,拿破侖鼎盛時期掌管著1300萬平方公里的領(lǐng)地。歐洲也曾出現(xiàn)過偉大的帝國,但都未走向統(tǒng)一。

    我們再觀察地圖,其實(shí)除了中國、俄羅斯以外,全世界99%的國家都是小國。分裂才是常態(tài),統(tǒng)一才不正常。馬老師也曾說過,成功都有偶然性只有失敗才存在必然。只有極少國家才實(shí)現(xiàn)了大一統(tǒng),所以我們不應(yīng)該問為什么歐洲是分裂的,而應(yīng)該問為什么中國是統(tǒng)一的。類比到我們的軟件也同樣如此,復(fù)雜才是常態(tài),不復(fù)雜才不正常。

    2 軟件固有的復(fù)雜性

    The Complexity of software is an essential property, not an accidental one.
    -- Grady Booch 《Object-Oriented Analysis and Design with Applications》
    譯:軟件的復(fù)雜性是一個基本特征,而不是偶然如此。

    Grady Booch在 Object-Oriented Analysis and Design with Applications 中提出這樣一個觀念,他認(rèn)為軟件的復(fù)雜性是固有的,包括問題域的復(fù)雜性、管理開發(fā)過程的困難性、通過軟件可能實(shí)現(xiàn)的靈活性與刻畫離散系統(tǒng)行為的問題,這4個方面來分析了軟件的發(fā)展一定伴隨著復(fù)雜,這是軟件工程這本科學(xué)所必然伴隨的一個特性。

    Everything, without exception, requires additional energy and order to maintain itself. I knew this in the abstract as the famous second law of thermodynamics, which states that everything is falling apart slowly.
    -- Kevin Kelly 《The Inevitable》
    譯:世間萬物都需要額外的能量和秩序來維持自身,無一例外。這就是著名的熱力學(xué)第二定律,即所有的事務(wù)都在緩慢地分崩離析。

    Kevin Kelly在 The Inevitable 也有提過類似的觀點(diǎn),他認(rèn)為世間萬物都需要額外的能量和秩序來維持自身,所有的事物都在緩慢地分崩離析。沒有外部力量的注入事物就會逐漸崩潰,這是世間萬物的規(guī)律,而非我們哪里做得不對。

    五 軟件架構(gòu)治理復(fù)雜度

    為軟件系統(tǒng)注入的外力就是我們的軟件架構(gòu),以及我們未來的每一行代碼。軟件架構(gòu)有很多種,從最早的單體架構(gòu),到后面的分布式架構(gòu)、SOA、微服務(wù)、FaaS、ServiceMesh等等。所有的軟件架構(gòu)萬變不離其宗,都在致力解決軟件的復(fù)雜性。

    1 架構(gòu)的本質(zhì)

    編程范式指的是程序的編寫模式,軟件架構(gòu)發(fā)展到今天只出現(xiàn)過3種編程范式( paradigm ),分別是結(jié)構(gòu)化編程,面向?qū)ο缶幊膛c函數(shù)式編程。

    • 結(jié)構(gòu)化編程取消 goto 移除跳轉(zhuǎn)語句,對程序控制權(quán)的直接轉(zhuǎn)移進(jìn)行了限制和規(guī)范
    • 面向?qū)ο缶幊滔拗?指針 的使用,對程序控制權(quán)的間接轉(zhuǎn)移進(jìn)行了限制和規(guī)范
    • 函數(shù)式編程以 λ演算法 為核心思想,對程序中的賦值進(jìn)行了限制和規(guī)范

    面向?qū)ο蟮奈宕笤O(shè)計(jì)原則 S.O.L.I.D。依賴倒置限制了模塊的依賴順序、單一職責(zé)限制模塊的職責(zé)范圍、接口隔離限制接口的提供形式。

    軟件的本質(zhì)是約束。商品的代碼不能寫在訂單域,數(shù)據(jù)層的方法不能寫在業(yè)務(wù)層。70年的軟件發(fā)展,并沒有告訴我們應(yīng)該怎么做,而是教會了我們不該做什么。

    2 遞增的復(fù)雜性

    軟件的復(fù)雜性不會憑空消失,并且會逐級遞增。針對遞增的復(fù)雜性有3個觀點(diǎn):

  • 模糊性創(chuàng)造了復(fù)雜,依賴性傳播了復(fù)雜
  • 復(fù)雜性往往不是由單個災(zāi)難引起的
  • 我們可以容易地說服自己,當(dāng)前變更帶來的一點(diǎn)點(diǎn)復(fù)雜性沒什么大不了
  • 曾經(jīng)小李跟我抱怨,說這段代碼實(shí)在是太惡心了,花了很長時間才看懂,并且代碼非常僵硬,而正好這個需求需要改動到這里,代碼真的就像一坨亂麻。我問他最后是怎么處理的,他說,我給它又加了一坨。

    3 編程思維論

    戰(zhàn)術(shù)編程

    其實(shí)小李的這種做法并非是一個個體行為,或許我們在遇到復(fù)雜代碼時都曾這樣茍且過,John教授這種編程方法稱之為“戰(zhàn)術(shù)編程”。戰(zhàn)術(shù)編程最主要的特點(diǎn)是快,同時具備如下幾個特點(diǎn)。

  • 當(dāng)前一定是最快的
  • 不會花費(fèi)太多時間來尋找最佳設(shè)計(jì)
  • 每個編程任務(wù)都會引入一些復(fù)雜度
  • 重構(gòu)會減慢當(dāng)前任務(wù)速度,所以保持最快速度
  • @HSFProvider(serviceInterface = AgnDistributeRuleConfigQueryService.class) public class AgnDistributeRuleConfigQueryServiceImpl implements AgnDistributeRuleConfigQueryService {@Overridepublic ResultModel<AgnDistributeRuleConfigDto> queryAgnDistributeRuleConfigById(String id) {logger.info("queryAgnDistributeRuleConfigById id=" + id);ResultModel<AgnDistributeRuleConfigDto> result = new ResultModel<AgnDistributeRuleConfigDto>();if(StringUtils.isBlank(id)){result.setSuccess(false);result.setErrorMsg("id cannot be blank");return result}try {AgnDistributeRuleConfigDto agnDistributeRuleConfigDto = new AgnDistributeRuleConfigDto();AgnDistributeRuleConfig agnDistributeRuleConfig = agnDistributeRuleConfigMapper.selectById(id);if(agnDistributeRuleConfig == null){logger.error("agnDistributeRuleConfig is null");result.setSuccess(false);result.setErrorMsg("agnDistributeRuleConfig is null");return result}this.filterDynamicRule(agnDistributeRuleConfig);BeanUtils.copyProperties(agnDistributeRuleConfig, agnDistributeRuleConfigDto);result.setSuccess(true);result.setTotal(1);result.setValues(agnDistributeRuleConfigDto);} catch (Exception e) {logger.error("queryAgnDistributeRuleConfigById error,", e);result.setSuccess(false);result.setErrorMsg(e.getMessage());}return result;} }

    我們看上面這段代碼,是一段查詢分發(fā)規(guī)則的業(yè)務(wù)邏輯。雖然功能能夠work,但不規(guī)范的地方其實(shí)非常多

  • Facade層定義全部邏輯 - 未做結(jié)構(gòu)分層
  • 業(yè)務(wù)與技術(shù)未做分離 - 耦合接口信息與業(yè)務(wù)數(shù)據(jù)
  • Try catch 滿天飛 - 缺少統(tǒng)一異常處理機(jī)制
  • 沒有規(guī)范化的日志格式 - 日志格式混亂
  • 但不可否認(rèn),他一定是當(dāng)前最快的。這就是戰(zhàn)術(shù)設(shè)計(jì)的特點(diǎn)之一,永遠(yuǎn)按當(dāng)前最快速交付的方案進(jìn)行推進(jìn),甚至很多組織鼓勵這種工作方式,為了使功能更快運(yùn)作,只注重短期收益而忽略長期價值。

    戰(zhàn)術(shù)龍卷風(fēng)

    Almost every software development organization has at least one developer who takes tactical programming to the extreme: a tactical tornado.
    -- John Ousterhout 《A Philosophy of Software Design》
    譯:幾乎每個軟件開發(fā)組織都有至少一個將戰(zhàn)術(shù)編程發(fā)揮到極致的開發(fā)人員:戰(zhàn)術(shù)龍卷風(fēng)。

    將戰(zhàn)術(shù)編程發(fā)揮到極致的人,叫戰(zhàn)術(shù)龍卷風(fēng)。戰(zhàn)術(shù)龍卷風(fēng)以腐化系統(tǒng)為代價換取當(dāng)前最高效的解決方案(或許他自己并未覺得)。戰(zhàn)術(shù)龍卷風(fēng)也有如下幾個特點(diǎn):

  • 是一位多產(chǎn)的程序員,沒人比龍卷風(fēng)更快完成任務(wù)
  • 總能留下龍卷風(fēng)后毀滅的痕跡🌪留給后人去清理
  • 是真的很卷
  • 一些組織甚至?xí)?zhàn)術(shù)龍卷風(fēng)視為英雄,為什么能干得又多又快?因?yàn)樗麑⒊杀痉诺搅宋磥怼\浖こ套畲蟮某杀驹谟诰S護(hù),我們每一次代碼的改動,都應(yīng)該是對歷史代碼的一次整理,而非單一的功能堆積。龍卷風(fēng)能贏得現(xiàn)在,但終將失去未來,而這個失敗的未來或許需要全團(tuán)隊(duì)與他一起買單。

    戰(zhàn)略編程

    John教授提出與戰(zhàn)術(shù)編程相對的是戰(zhàn)略編程,戰(zhàn)略編程更注重長期價值,不滿足于功能work,致力于制作出色的設(shè)計(jì),以滿足對未來擴(kuò)展的訴求(注意,不要過度)。戰(zhàn)略設(shè)計(jì)有如下4個特點(diǎn)

  • 工作代碼遠(yuǎn)遠(yuǎn)不夠
  • 引入不必要的復(fù)雜度不可接受
  • 不斷對系統(tǒng)設(shè)計(jì)進(jìn)行小幅改進(jìn)
  • 投資心態(tài)(每位工程師都需要對良好的設(shè)計(jì)進(jìn)行連續(xù)的少量投資 10~20%)
  • John Ousterhout教授在 A Philosophy of Software Design 書中提到了戰(zhàn)略設(shè)計(jì)與戰(zhàn)術(shù)設(shè)計(jì)的總成本投入。隨著時間的流逝,戰(zhàn)略設(shè)計(jì)可以有效控制軟件成本,但戰(zhàn)術(shù)設(shè)計(jì)會隨著時間的推移線性遞增。這與Martin Fowler在 Patterns of Enterprise Application Architecture 這本書中所提的關(guān)于數(shù)據(jù)驅(qū)動與領(lǐng)域驅(qū)動關(guān)于復(fù)雜度的治理是同樣的含義,要致力于長期的價值投資。

    4 系統(tǒng)的困境與演進(jìn)

    沒有系統(tǒng)是天然復(fù)雜的,為了快速完成任務(wù)不斷引入新的復(fù)雜度至系統(tǒng)逐漸腐化,無限增長與無限傳遞的復(fù)雜度讓軟件需求越來越難“快速完成”。當(dāng)有一天我們意識到系統(tǒng)的復(fù)雜性時再試圖通過戰(zhàn)略設(shè)計(jì)進(jìn)行軟件的迭代,你會發(fā)現(xiàn)舉步維艱,一處很小的修改需要投入大量的基建修復(fù),最終我們不得不向成本低頭,不斷再通過戰(zhàn)術(shù)設(shè)計(jì)無限的茍且。

    A condition that is often incorrectly labeled software maintenance. To be more precise, it is maintenance when we correct errors; it is evolution when we respond to changing requirements; it is preservation when we continue to use extraordinary means to keep an ancient and decaying piece of software in operation. Unfortunately, reality suggests that an inordinate percent- age of software development resources are spent on software preservation.
    -- Grady Booch 《Object-Oriented Analysis and Design with Applications》
    譯:我們總是說我們需要“維護(hù)”這些老系統(tǒng)。而準(zhǔn)確的說,在軟件發(fā)展過程里,只有我們修正錯誤時,才是維護(hù);在我們應(yīng)對改變的需求時,這是演進(jìn);當(dāng)我們使用一些極端的手段來保持古老而陳腐的軟件繼續(xù)工作時,這是保護(hù)(茍且)。事實(shí)證明我們更多的時間是在應(yīng)對最后一種狀況。

    如同Grady Booch在 Object-Oriented Analysis and Design with Applications 中所提到的觀點(diǎn),當(dāng)我們使用一些極端的手段來保持古老而陳腐的軟件繼續(xù)工作時,這確實(shí)是一種茍且。我們小心翼翼、集成測試、灰度發(fā)布、及時回滾等等,我們沒有在“維護(hù)”他們,而是以一種丑陋的方式讓這些丑陋的代碼繼續(xù)能夠成功茍且下去。當(dāng)代碼變成意大利面條時,將幾乎是不可能修復(fù),成本將成指數(shù)倍增長,并且似乎我們的系統(tǒng)已經(jīng)存在這樣的代碼,并且可能還在持續(xù)增加中。

    六 架構(gòu)偽論

    在架構(gòu)設(shè)計(jì)中,總有一些軟件工程師所堅(jiān)信的詩和遠(yuǎn)方,但到不了的烏托邦不一定就是遙不可及的美好圣地,實(shí)則也可能是對系統(tǒng)無益甚至有害的架構(gòu)設(shè)計(jì)。這里列舉其中2條可能存在的架構(gòu)偽論。

    1 好的代碼自解釋

    Comments do not make up for bad code
    -- Martin Fowler 《Clean Code》
    譯:注釋不是對劣質(zhì)代碼的補(bǔ)救

    Martin Fowler在 Clean Code 書中提到注釋不是對劣質(zhì)代碼的補(bǔ)救,以前我也一直堅(jiān)信如果代碼足夠好是不需要注釋的。但實(shí)則這是一個偽命題,John教授這么評價它 ‘good code is self-documenting’ is a delicious myth。

    /*** 批量查詢客戶信息*/ public List<CustomerVO> queryCustomerList(){ // 查詢參數(shù)準(zhǔn)備UserInfo userInfo = context.getLoginContext().getUserInfo(); if(userInfo == null || StringUtils.isBlank(userInfo.getUserId())){ return Collections.emptyList();}LoginDTO loginDTO = userInfoConvertor.convert(userInfo); // 查詢客戶信息List<CustomerSearchVO> customerSearchVOList = customerRemoteQueryService.queryCustomerList(loginDTO);Iterator<CustomerSearchVO> it = customerSearchVOList.iterator(); // 排除不合規(guī)客戶 while(it.hasNext()){CustomerSearchVO customerSearchVO = it.next(); if(isInBlackList(customerSearchVO) || isLowQuality(customerSearchVO)){it.remove();}} // 補(bǔ)充客戶其他屬性信息batchFillCustomerPositionInfo(customerSearchVOList);batchFillCustomerAddressInfo(customerSearchVOList); return customerSearchVOList; }

    這段代碼我們可以很輕松的在5秒內(nèi)看明白這個函數(shù)是做什么的,并且知道它內(nèi)部的一些業(yè)務(wù)規(guī)則。無限的私有方法封裝會讓代碼鏈路過深,無限類的拆解會造成更多網(wǎng)狀依賴,至少有3點(diǎn)內(nèi)容,讓我們絕不能拋棄注釋。

  • 無法精準(zhǔn)命名:命名的含義是抽象實(shí)體隱藏細(xì)節(jié),我們不能在一個名字上賦予它全部的信息,而必要的注釋可以完美的進(jìn)行輔佐。
  • 設(shè)計(jì)思想的闡述:代碼只能實(shí)現(xiàn)設(shè)計(jì)不能闡述設(shè)計(jì),這也是為什么一些復(fù)雜的架構(gòu)設(shè)計(jì)我們需要文檔的支撐而非代碼的‘自解釋’,在文檔與代碼之間的空隙,由注釋來填補(bǔ)。
  • 母語的力量:這點(diǎn)尤其適合我們中國人,有時并不是因?yàn)樽⑨屔俅a多,所以我們下意識會首先看代碼。而是我們幾十年感受的文化,讓我們對中文與ABC具有完全不一樣的感觀。
  • 2 永遠(yuǎn)追求最優(yōu)雅

    雷布斯曾自夸自己寫的代碼像詩一樣優(yōu)雅,追求優(yōu)雅的代碼應(yīng)該是每個軟件工程師的心中的圣地。但有時存在一些不優(yōu)雅,存在一些‘看似不合理’并不代表就不對,反而有時在追求更優(yōu)雅的路上我們持續(xù)跑偏。

    The goal of software architecture is to minimize the human resources required
    to build and maintain the required system.
    -- Robert C.Martin 《Clean Architecture》
    譯:軟件架構(gòu)的終極目標(biāo)是,用最小的人力成本來滿足構(gòu)建和維護(hù)該系統(tǒng)的需求

    Robert C.Martin在 Clean Architecture 一書中提到了架構(gòu)終極目標(biāo),用最小的人力成本來滿足構(gòu)建和維護(hù)該系統(tǒng)的需求。架構(gòu)始終是我們解決復(fù)雜度的一個工具,如果當(dāng)前系統(tǒng)并不復(fù)雜,我們不需要為了所謂的優(yōu)雅去過分改造與優(yōu)化它,持續(xù)將成本置在一個較低水位,就是軟件最好的解決辦法。

    業(yè)務(wù)簡單的系統(tǒng)不應(yīng)用DDD架構(gòu),弱交互場景也無需進(jìn)行前后端分離,哪怕是鄧總設(shè)計(jì)師在規(guī)劃新中國的發(fā)展上,也是制定了一套‘中國特色社會主義’制度。不要盲從一些教條的觀念,選擇適合自己的,控制在可控制范圍內(nèi),既不過度也不缺失。畢竟沒有絕對的優(yōu)雅,甚至沒有絕對的正確。

    七 寫在最后

    很多人認(rèn)為做業(yè)務(wù)開發(fā)顯得沒那么有挑戰(zhàn)性,但其實(shí)正好相反。最難解決的bug是無法重現(xiàn)的bug,最難處理的問題域是不確定性的問題域。業(yè)務(wù)往往是最復(fù)雜的,面向不確定性設(shè)計(jì)才是最復(fù)雜的設(shè)計(jì)。軟件工程學(xué)科最難的事情是抽象,因?yàn)樗鼪]有標(biāo)準(zhǔn)、沒有方法、甚至沒有對錯。如何在軟件固有的復(fù)雜性上找到一條既不過度也不缺失的路,是軟件工程師的終身課題,或許永遠(yuǎn)也無法達(dá)到,或許我們已經(jīng)在路上了。

    原文鏈接

    本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。?

    總結(jié)

    以上是生活随笔為你收集整理的系统困境与软件复杂度,为什么我们的系统会如此复杂的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    日韩欧美一区二区三区免费观看 | 色综合天天色综合 | 四虎成人免费观看 | 色综合久| 波多野结衣视频一区二区 | 成人性生交大片免费看中文网站 | 日韩精品一区二区三区三炮视频 | 久久躁日日躁aaaaxxxx | 免费看黄电影 | 在线精品视频免费观看 | 超碰97中文 | 97超碰成人| 91资源在线观看 | 91桃色在线免费观看 | 久久综合九色综合97_ 久久久 | 免费看特级毛片 | 国产高清不卡一区二区三区 | 久久久国产一区 | 国产破处在线播放 | 国产成人一区二区在线观看 | 97超碰在线久草超碰在线观看 | 国产精品初高中精品久久 | 国产精品一区二区久久久 | 久草电影在线观看 | 久久久久色 | 亚洲动漫在线观看 | 国产精品18久久久久久久久久久久 | 久久久在线视频 | 午夜久久视频 | 在线亚洲欧美日韩 | 成人av一级片 | 日本巨乳在线 | av网站大全免费 | 99久热| 久久精品一区二区三区国产主播 | 人人插人人费 | 久久久久人人 | 一区二区三区在线视频观看58 | 天天色天天射天天操 | 亚洲自拍自偷 | 99亚洲天堂 | 久久久久久久久久久久影院 | 九九在线视频免费观看 | 久久久一本精品99久久精品66 | 国产xvideos免费视频播放 | www麻豆视频 | 欧美国产精品久久久久久免费 | 日日噜噜噜噜夜夜爽亚洲精品 | 九九99| 欧美日本三级 | www国产亚洲精品久久麻豆 | 日韩一级黄色片 | 国产女v资源在线观看 | 久久精品国产一区二区三区 | 国产传媒中文字幕 | 午夜少妇一区二区三区 | 久久精品中文字幕免费mv | av电影久久 | 日韩在线观看网址 | 日韩av中文字幕在线免费观看 | 91精品免费在线视频 | 国产高清在线看 | 国产欧美日韩一区 | 久草视频在线免费 | 97在线观看免费视频 | 色噜噜狠狠狠狠色综合 | 日韩欧美高清在线 | 91精品啪在线观看国产线免费 | 99久久99精品| 国产精品久久久一区二区 | 日本公乱妇视频 | 国产在线观看免费 | 久久电影日韩 | 久久精品国产久精国产 | 国产精品一区二区三区在线 | 娇妻呻吟一区二区三区 | 91亚洲精品国偷拍自产在线观看 | 九月婷婷人人澡人人添人人爽 | 国产精品99久久久久久久久久久久 | 欧美一区二区三区激情视频 | 99色精品视频| 色视频在线 | 深夜国产福利 | 国产精品一区二区三区在线看 | 月下香电影 | 国产精品6 | www.狠狠色| 美国av大片| 亚洲精品一区中文字幕乱码 | 国产亚洲精品综合一区91 | 在线性视频日韩欧美 | 96香蕉视频 | 在线岛国av | 亚洲成av | 久草在线视频在线 | 日韩成人免费在线电影 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产精品理论片在线观看 | 久久免费电影 | 国产九九九视频 | 狠狠躁日日躁狂躁夜夜躁av | 久久人人爽爽 | 国产激情电影综合在线看 | 人人看97 | 91最新视频 | 黄色三级免费网址 | av福利在线免费观看 | 日韩视频1 | 国产色 在线 | 亚洲精选视频在线 | 日韩精品欧美精品 | 91插插插网站 | 91完整版在线观看 | 久久午夜色播影院免费高清 | 97精品国产97久久久久久 | 国产日韩精品久久 | 国产成人亚洲精品自产在线 | 久久综合久久综合这里只有精品 | 天天搞天天干天天色 | 欧美一级免费在线 | 二区三区毛片 | 久久免费看a级毛毛片 | av观看免费在线 | 人人操日日干 | 麻豆国产在线播放 | 国产在线综合视频 | 天天草天天干天天 | 国产综合精品一区二区三区 | 人人精品久久 | 亚洲国产片色 | 91视频链接| 色婷婷中文 | 亚洲免费小视频 | 在线视频观看国产 | 中文字幕在线乱 | 91麻豆网| 国产精品小视频网站 | 亚洲 成人 一区 | a级一a一级在线观看 | 国产成人福利在线观看 | 亚洲精品成人免费 | 婷婷激情久久 | 久久精品99国产精品 | 成人教育av | 日本xxxxav| 丁香花中文在线免费观看 | 亚洲国产经典视频 | 欧美性生活久久 | 久久久国产日韩 | 日韩精品在线免费观看 | 国产精品男女啪啪 | 精品在线观看一区二区 | 成年人视频免费在线 | 久久1电影院 | a成人v在线 | 天天色天天色 | 天天干天天拍天天操 | 国产又粗又猛又黄又爽的视频 | 日本精品xxxx | 国产免费亚洲 | 国际av在线 | 国产精品video爽爽爽爽 | 丁香五香天综合情 | www.大网伊人 | 在线观看日韩视频 | 91完整版在线观看 | 国产精品久久久久久欧美 | 国产成人黄色 | 99国产免费网址 | 国产精品久久久久免费 | 日韩在线免费高清视频 | 欧美一级黄色片 | 欧美综合在线观看 | 91中文视频 | 天天操天天射天天插 | 2018亚洲男人天堂 | 国产91粉嫩白浆在线观看 | 欧美综合干 | 另类五月激情 | 99成人免费视频 | 操操爽| 国产精品mm | 日韩一级理论片 | 亚洲精品av中文字幕在线在线 | 激情视频综合网 | 久草精品视频 | 午夜黄色影院 | 国产精品不卡在线 | 久久艹欧美 | 久久综合狠狠综合久久狠狠色综合 | 五月天亚洲激情 | www.人人干| 国产麻豆果冻传媒在线观看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 久久免费视频3 | 日韩成人精品一区二区 | 日韩色一区二区三区 | 制服丝袜在线 | 久久久视频在线 | 99视频偷窥在线精品国自产拍 | 久久久久电影网站 | 欧美精品一区二区在线观看 | 精品久久久久久一区二区里番 | 久久狠狠一本精品综合网 | 亚洲精品字幕在线观看 | 久久国产三级 | 国产在线免费av | 日日天天干 | 亚洲综合色网站 | 日本最新高清不卡中文字幕 | 最新国产福利 | 九九视频免费在线观看 | 狠狠久久伊人 | 欧美在线一级片 | 97成人啪啪网 | 久久久久久欧美二区电影网 | 天堂在线一区二区三区 | 日韩动态视频 | 69国产盗摄一区二区三区五区 | 婷婷久久综合网 | 奇米影视四色8888 | 欧美极度另类性三渗透 | 婷婷在线视频观看 | www.亚洲| 深爱激情五月婷婷 | 在线看成人av | 偷拍精品一区二区三区 | 精品在线视频观看 | 国产精品免费在线观看视频 | 不卡av在线免费观看 | 粉嫩av一区二区三区四区五区 | 国产福利专区 | 操操综合| 国产99久久久久久免费看 | 天天干天天天 | 中文字幕中文字幕在线中文字幕三区 | 欧洲精品久久久久毛片完整版 | 国产精品美女久久久久久久网站 | 成 人 黄 色 视频免费播放 | 黄色日批网站 | 中文字幕丰满人伦在线 | 久久综合精品国产一区二区三区 | 人人网av| 中文在线www | 日韩手机在线 | 亚洲精品乱码久久久久久9色 | 日韩在线欧美在线 | 国产婷婷在线观看 | 国产少妇在线观看 | 一级黄视频 | 国产在线p| 日韩高清不卡在线 | 国产中文字幕在线免费观看 | 久久男人中文字幕资源站 | 在线视频1卡二卡三卡 | 日韩欧美在线一区 | 欧美精品在线免费 | 97免费在线观看 | 亚洲成a人片77777kkkk1在线观看 | 日韩高清免费电影 | 在线观看mv的中文字幕网站 | 成人av地址 | 国产精品美女在线 | 国产人成在线观看 | 91九色蝌蚪视频在线 | 国产精品免费久久久久影院仙踪林 | 欧美精品亚洲二区 | 一级黄色大片 | 精品久久久久久亚洲 | 欧美aaa一级 | 免费观看一级 | 五月丁婷婷 | 免费高清男女打扑克视频 | 国产裸体视频bbbbb | 天天视频色 | 中文字幕三区 | 欧美色道| 色片网站在线观看 | 日韩欧美在线第一页 | av在线看网站 | 韩国中文三级 | 狠狠天天 | 国产中文字幕在线 | 欧美一级片免费 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 国产自产高清不卡 | 免费在线播放 | 六月丁香色婷婷 | 狠狠干电影 | a天堂一码二码专区 | 日韩天天操| 中文字幕在 | 久久精品99国产精品酒店日本 | 超碰97网站 | 黄色三级免费观看 | 日韩专区av | 国产999久久久| 久草在线视频免赞 | 美女黄色网在线播放 | 中文字幕久久精品 | www91在线观看 | 在线精品国产 | av在线a| 国内精品免费久久影院 | 在线观看激情av | 综合天天久久 | 日韩欧美一区二区在线观看 | 在线播放国产精品 | 中文字幕xxxx | 国产成人免费av电影 | 在线av资源| 在线国产一区二区三区 | 日韩在线视频在线观看 | 久久www免费视频 | 在线观看免费高清视频大全追剧 | 欧美另类老妇 | 少妇按摩av | 黄色网址中文字幕 | av五月婷婷| 久久久久久久网 | 欧美日韩后 | 国产精品久久久久av | 波多野结衣一区二区三区中文字幕 | 九九久久久久久久久激情 | 欧美激情综合色综合啪啪五月 | 国产综合在线观看视频 | 免费一级片在线观看 | av在线免费不卡 | 深爱五月网| 99国产精品免费网站 | 五月色丁香| 91探花国产综合在线精品 | 亚州成人av在线 | 亚洲免费成人av电影 | 欧美成人精品在线 | 久久精品一区二区三区视频 | 在线观看一区二区精品 | 人人干97 | 在线免费观看视频一区二区三区 | 在线免费观看涩涩 | 麻豆精品视频在线观看免费 | 国产亚州精品视频 | 欧美激情视频一区二区三区 | 美女福利视频在线 | 最新影院| 免费看片日韩 | www操操操 | 中文字幕二区三区 | 国产精品一区二区三区视频免费 | 2019中文在线观看 | 中文字幕人成人 | 天天综合网~永久入口 | 四虎永久精品在线 | 国产精品久久久久久久久久免费看 | 在线视频 一区二区 | 日韩a在线播放 | 日韩理论在线播放 | 开心婷婷色 | 狂野欧美激情性xxxx欧美 | 国产一区免费 | 色综合久久88色综合天天 | 午夜精品视频免费在线观看 | 在线婷婷 | 亚洲欧洲日韩在线观看 | 91精品视频导航 | 男女全黄一级一级高潮免费看 | 欧美一区二区三区在线视频观看 | 久久精品影片 | 国产亚洲成人精品 | 99精品小视频 | 一区二区视 | 青春草视频 | 一级成人网 | 亚洲一区网| 色香网 | 国产成人香蕉 | 91丨九色丨蝌蚪丨对白 | 亚洲国产成人久久 | 四虎影视8848dvd | 91精品免费| 九九色在线 | 免费一级日韩欧美性大片 | 久久激情精品 | 玖玖在线视频观看 | av资源网在线播放 | 在线观看黄色国产 | 黄色天堂在线观看 | 精品国产一区二区三区在线观看 | 久久成人一区二区 | 天堂av网站 | 久久精品波多野结衣 | 国产视频一区二区在线 | 日本中文字幕在线观看 | 日韩精品一区二区三区第95 | 日韩在线免费不卡 | 国产精品综合av一区二区国产馆 | 午夜av不卡| 国产成人黄色网址 | a黄色片在线观看 | 久久国产剧场电影 | 欧美日韩高清一区二区 | 国内精品视频在线 | 久久综合狠狠综合久久综合88 | 欧美极度另类性三渗透 | 日韩偷拍精品 | 三级性生活视频 | 美女视频黄频大全免费 | 亚洲黄色av一区 | www黄色av | 看国产黄色片 | 亚洲欧美视频在线播放 | av大全在线播放 | 亚洲精品999 | 在线免费观看亚洲视频 | 久久久久久久久爱 | 狠狠操欧美 | 久久尤物电影视频在线观看 | 亚洲片在线资源 | 久草精品视频在线播放 | 精品一区二区三区四区在线 | 亚洲黄色一级电影 | 四虎成人网 | 草久热| 精品国产乱码久久久久久久 | 在线免费观看的av | www.夜夜爽 | 欧美另类交在线观看 | 日韩有码第一页 | 在线超碰av | 国产精品国产亚洲精品看不卡15 | 91精品成人久久 | 久久亚洲美女 | 中文在线| 最近日本mv字幕免费观看 | 98久久| 欧美一级片免费观看 | 99国产在线观看 | 久久久久视 | 亚洲天天综合 | 午夜色婷婷 | 国产黄色精品视频 | 天天射成人| 亚州精品天堂中文字幕 | 在线免费观看不卡av | 天天操天天色天天射 | 97人人网 | 色偷偷88888欧美精品久久 | 中国一级特黄毛片大片久久 | 日韩精品视频一二三 | 日本精品中文字幕在线观看 | 中文字幕亚洲精品日韩 | 成人av一区二区兰花在线播放 | 日韩在线网址 | a级片在线播放 | 天天插天天干 | www欧美色| www.色午夜.com | 中文字幕av一区二区三区四区 | 亚洲精品xxxx | 久久99这里只有精品 | 久久激情五月丁香伊人 | 97超碰成人在线 | av在线播放免费 | 91久久精品一区二区二区 | 久久成人视屏 | 日韩欧美xxx | 成人免费视频免费观看 | 日韩av中文字幕在线免费观看 | 国产高清在线a视频大全 | 好看的国产精品视频 | 国产破处在线播放 | 中文字幕在线国产精品 | 国产一区在线免费 | 激情文学丁香 | 日韩黄色在线观看 | 麻豆av一区二区三区在线观看 | 亚洲 在线 | 国产精品久久电影网 | 午夜美女av | 成人午夜网| 欧美a√大片| 91av小视频 | 香蕉视频18 | 国产精品激情 | 免费毛片一区二区三区久久久 | 9797在线看片亚洲精品 | av黄色在线播放 | 日韩高清免费无专码区 | 91秒拍国产福利一区 | 国产一级免费视频 | 美女久久久 | 亚洲日韩中文字幕在线播放 | 黄色三级av| 9999在线 | 丝袜美腿亚洲综合 | 亚洲免费小视频 | 人人干人人艹 | 久草精品视频 | 国产视频 久久久 | 久久九九视频 | 91综合视频在线观看 | 亚洲国产美女精品久久久久∴ | 亚洲精品一区二区三区在线观看 | 成人国产精品久久久久久亚洲 | 天天操天天操天天操天天操天天操天天操 | 久久久久久高潮国产精品视 | 九九久久久久久久久激情 | 久久精品免视看 | 91麻豆网 | 成人污视频在线观看 | 超碰97中文 | 在线激情小视频 | 一本一本久久a久久精品综合小说 | 欧美三人交 | 欧美另类色图 | 丁香九月激情 | 免费福利视频网站 | 美女免费黄视频网站 | 亚洲视频999 | 黄色av免费电影 | 国产精品国产三级国产专区53 | 美女视频国产 | 欧美日韩视频在线播放 | 中文字幕乱码亚洲精品一区 | 婷婷丁香久久五月婷婷 | 狠狠狠狠狠狠干 | 国产精品九九九 | 欧美日韩免费一区 | 中文字幕在线观看一区二区三区 | 美女视频免费精品 | 中文字幕一区二区三区四区久久 | 香蕉网在线 | www毛片com| 在线观看黄色国产 | 成人黄色在线电影 | 国产99久久九九精品免费 | 久久99国产精品二区护士 | 国产精品亚洲视频 | 97精品国产97久久久久久久久久久久 | 99精品国产一区二区三区麻豆 | 免费观看性生交 | 国产精品久久久久久欧美 | 日韩中文字幕a | 国产一级片直播 | 国产综合福利在线 | 欧美韩日视频 | 国产精品不卡av | 欧美a级成人淫片免费看 | 91精品视频在线看 | 国产99久久九九精品免费 | aaa日本高清在线播放免费观看 | 中文字幕中文字幕在线中文字幕三区 | 操操操夜夜操 | 国产91av视频在线观看 | 色久综合 | 久久桃花网 | 国产美女主播精品一区二区三区 | 久久香蕉国产 | 在线观看av大片 | 九九九国产 | 在线观看日韩中文字幕 | 最近中文字幕免费 | 中文字幕在线看视频国产 | 特级西西444www大精品视频免费看 | 9色在线视频 | 91在线免费视频观看 | 欧美成人精品欧美一级乱黄 | 国产精品第一视频 | 欧美一进一出抽搐大尺度视频 | 亚洲精品黄色 | 国产精品免费小视频 | 91九色性视频 | 四虎影视久久久 | 国产高清99 | 香蕉在线视频观看 | 亚洲一区美女视频在线观看免费 | 日韩免费在线视频观看 | 91精品国自产在线偷拍蜜桃 | 久久综合婷婷国产二区高清 | 婷婷日韩| 久久久久久久久久久综合 | 久久久www免费电影网 | 九九免费在线观看视频 | 亚洲国产视频直播 | www.夜夜| 中文字幕在线观看免费高清电影 | 日韩在线免费高清视频 | 992tv人人网tv亚洲精品 | 五月婷婷色 | 麻豆免费在线视频 | 91视频com | 四虎影视成人精品国库在线观看 | 奇米网8888 | www黄色软件 | 91成人亚洲 | 国产不卡毛片 | 久久久亚洲精华液 | 在线免费观看视频一区 | 96精品在线| 欧美日韩精品在线免费观看 | 亚洲国产中文字幕在线观看 | 精品久久1| 青青河边草免费直播 | 美腿丝袜一区二区三区 | 91亚洲精品久久久 | 极品久久久久 | 黄色大全视频 | 黄在线免费观看 | 91精品啪在线观看国产线免费 | 久久在线免费观看 | 欧洲一区二区三区精品 | 中文字幕日本特黄aa毛片 | 91完整版在线观看 | 久久的色 | 亚洲成人中文在线 | 日韩精品一区二区三区第95 | 亚洲精品播放 | 在线天堂中文www视软件 | 亚洲最大成人免费网站 | 五月激情五月激情 | 欧美综合干 | 日韩中文字幕在线不卡 | 国产小视频在线观看 | 久久影院精品 | 欧美小视频在线 | 97精品欧美91久久久久久 | 久久撸在线视频 | 亚洲精品国产精品国产 | 国产精品久久久久永久免费看 | 黄色三级免费观看 | 97超碰人人澡人人爱 | 国产精品一区二区免费 | 最新真实国产在线视频 | 成人a级免费视频 | 高清av免费观看 | 一级a性色生活片久久毛片波多野 | 国产精品va在线播放 | 久久综合中文色婷婷 | 亚洲色图 校园春色 | 日韩欧美成 | 99精品黄色| 99热精品在线观看 | 97综合在线 | 69国产成人综合久久精品欧美 | 日韩视频区 | 在线观看视频免费播放 | 国产999精品久久久影片官网 | 国产精品一级在线 | 成人免费在线电影 | 波多野结衣视频在线 | av女优中文字幕在线观看 | 香蕉视频在线免费 | 久久av影院 | 在线视频 亚洲 | 色网站在线免费观看 | 91网站在线视频 | 激情电影影院 | 中文av免费 | 免费看一级黄色大全 | 国产在线不卡一区 | 日韩精品久久一区二区三区 | 日日夜夜精品 | 国产五月婷 | 日韩在线中文字幕 | 西西4444www大胆视频 | 99视频导航 | 国产一级视屏 | 人人爱人人射 | 综合网伊人 | 免费看片成年人 | 久久久精品视频成人 | 在线日韩中文 | 欧美精品999 | 国产精品国产三级在线专区 | 九九热在线播放 | 麻豆视频免费看 | 国内精品久久久久影院优 | 天天色 天天 | 国内免费的中文字幕 | 安徽妇搡bbbb搡bbbb | 五月婷婷色播 | 国产理论一区二区三区 | 精品在线播放视频 | 成人理论在线观看 | 在线观看中文字幕第一页 | 精品国产精品国产偷麻豆 | 日韩免费一区二区三区 | 久久精品国产一区 | 亚洲免费资源 | 91亚洲综合 | 九九热久久免费视频 | 日韩激情网 | 免费影视大全推荐 | 婷婷网站天天婷婷网站 | 亚洲一区网 | 国产在线视频导航 | 亚洲久草视频 | av免费在线观 | 欧美人人爱 | 激情五月亚洲 | 免费在线黄色av | 国产精品九九视频 | 久久伦理网 | 天天精品视频 | 欧美日韩高清国产 | 久久精品站 | 欧美精品三级在线观看 | 一级α片免费看 | 日韩二三区 | 日韩在线短视频 | 中文字幕在线看视频 | 天天做天天干 | 久久久久国产精品www | 国产中文欧美日韩在线 | 日韩在线观看小视频 | 亚洲欧洲在线视频 | 一二三四精品 | 日韩精品一区二区不卡 | 日韩av一区二区三区在线观看 | 国产男男gay做爰 | 五月天婷亚洲天综合网鲁鲁鲁 | 免费在线观看亚洲视频 | 日韩精品在线看 | 欧美性天天 | 99资源网| 成年人在线播放视频 | 精品久操 | av永久网址 | 国产在线v | 99精品国产免费久久久久久下载 | 欧美日韩大片在线观看 | 亚洲 欧美 综合 在线 精品 | 正在播放五月婷婷狠狠干 | 91在线精品秘密一区二区 | 日韩精品一区二区三区不卡 | 久久99久久99精品免费看小说 | 中文字幕免费 | 激情视频在线观看网址 | 亚洲涩涩网站 | 波多野结衣视频网址 | 国产性xxxx | 午夜av色 | 国产综合福利在线 | 国产精品 国产精品 | 久久国产精品一区二区三区四区 | 色狠狠干| 午夜aaaa| 欧美午夜理伦三级在线观看 | 婷久久 | 国产九九九精品视频 | a久久久久 | 手机av在线网站 | 国产精品久久久久久久毛片 | 欧美日韩一区二区三区在线免费观看 | 99免费看片| 中文字幕一区二区三区在线观看 | 少妇视频一区 | 天天射成人 | 色橹橹欧美在线观看视频高清 | 国产福利一区二区三区视频 | 91看片淫黄大片一级在线观看 | 97在线免费观看 | 午夜精品视频一区 | 亚洲日日射| 亚洲成人黄 | 综合激情伊人 | 欧美一区二区视频97 | 91视频在线自拍 | 国产综合久久 | 婷婷日日| 狠狠色丁香婷婷 | 日韩av免费大片 | 又色又爽又黄高潮的免费视频 | 美女网站色在线观看 | 国产精品国产三级国产aⅴ9色 | 五月天综合网站 | 激情av一区二区 | 国产.精品.日韩.另类.中文.在线.播放 | 丁香在线观看完整电影视频 | 五月天六月色 | www.人人干| 亚洲国产中文字幕在线观看 | 人人玩人人爽 | 亚洲国产wwwccc36天堂 | 超碰97人 | 国产97在线播放 | 男女啪啪免费网站 | 国产精品日韩高清 | 国产免费资源 | 国产一区二三区好的 | 精品一区二区在线免费观看 | 亚洲精品无| 色婷婷国产精品一区在线观看 | 综合色在线观看 | 久久精品国产免费观看 | 97在线成人 | 国产精品视频全国免费观看 | 91成人欧美 | 欧美午夜久久 | 国产亚洲在线视频 | 一本一道波多野毛片中文在线 | 97精品国产aⅴ | aav在线| 亚洲日本va午夜在线电影 | 91午夜精品| 久草在线精品观看 | 人人澡视频 | 日韩精品一区二区在线 | 日韩二区三区 | 婷婷丁香六月天 | 成人国产精品av | 韩国三级av在线 | 在线91观看 | 国产高清成人 | 91中文在线观看 | 欧美日韩免费观看一区=区三区 | 久久免费福利 | 久久久国产99久久国产一 | 欧美日韩精品影院 | 六月婷操| 在线欧美小视频 | 久久9999久久免费精品国产 | www.国产毛片 | 中文字幕日韩高清 | 亚洲 中文 在线 精品 | 亚州精品天堂中文字幕 | 午夜国产福利在线观看 | 色综合天天综合 | 亚洲国产成人精品在线观看 | 色资源二区在线视频 | 狠狠伊人| 在线观看不卡的av | 国内小视频| 五月婷婷久 | 911久久| 欧美地下肉体性派对 | 国内成人综合 | 日韩在线中文字幕 | 国产精品一区二区三区电影 | 日韩精品一区二区免费 | 99视频导航 | 在线看国产一区 | 五月天久久久久久 | 亚洲精品一区中文字幕乱码 | 91九色蝌蚪国产 | 黄色毛片在线观看 | 亚洲精品视频在线观看免费 | 婷婷伊人网 | 免费看的黄色的网站 | 麻豆国产在线视频 | 国产精品美女久久久久久久 | 亚洲午夜精品久久久久久久久久久久 | 国产精品欧美一区二区三区不卡 | 粉嫩av一区二区三区免费 | 伊人五月天.com | 色综合天天视频在线观看 | 最近2019好看的中文字幕免费 | 国产一卡二卡四卡国 | 亚洲第一中文网 | 亚洲欧洲av | 欧美电影黄色 | 久久99久久99精品 | 特级片免费看 | avv天堂| 久久免费观看视频 | 国产自在线观看 | 欧美一级片在线免费观看 | 日韩高清一区 | 992tv人人网tv亚洲精品 | 一区二区三区四区不卡 | 欧美激情综合色综合啪啪五月 | 国产精品久久久久久久久久东京 | 国产资源在线播放 | 色婷婷五 | 久草在线观看视频免费 | 欧美韩国日本在线 | 97超碰人人澡 | 99热最新精品 | 色多多污污在线观看 | 黄色福利| 国产美女久久 | 91在线porny国产在线看 | 日韩一区二区三区免费电影 | 在线观看视频在线 | 日韩a在线看 | 福利一区视频 | 久久精品久久久久 | 国产精品12 | 国产日韩精品一区二区 | 亚洲高清视频在线 | 97电影网手机版 | 国产网红在线观看 | a黄色影院| 天天天干| 久久久午夜视频 | 日韩视频一区二区 | 国产精品乱码久久久 | 成人高清在线观看 | 国产精品久久久久av福利动漫 | 日韩aⅴ视频 | 免费看黄20分钟 | 久久久国产一区 | 国产精品24小时在线观看 | 国产一二三四在线观看视频 | 日韩3区| 国产裸体视频网站 | 精品国内自产拍在线观看视频 | 日本黄色黄网站 | 成人久久国产 | 玖玖爱免费视频 | 国产精品av免费观看 | 色婷婷av在线| 国产aa免费视频 | 欧美午夜精品久久久久 | 激情视频久久 | 日韩电影在线观看一区 | 亚洲精品免费在线观看 | 日韩专区视频 | 欧美在线aaa | 香蕉精品在线观看 | 久久视频精品在线观看 | 久久综合激情 | 亚洲人视频在线 | 黄色网址在线播放 | av官网在线 | 国产精品小视频网站 | 五月婷婷操 | 国精产品永久999 | 伊人婷婷在线 | 国产精品福利在线观看 | 日本精品一区二区在线观看 | 成人免费在线视频 | 午夜精品视频一区 | 久久国产系列 | 在线观看a视频 | 欧美日韩精品网站 | a午夜电影 | 国产一区二区在线观看视频 | 免费福利在线观看 | 在线国产一区二区 | 午夜电影av | 97色在线观看免费视频 | 久久综合导航 | 国产欧美精品在线观看 | 日本公妇在线观看高清 | 亚洲欧美少妇 | 日韩一区二区三区免费视频 | 国产高清在线观看av | 欧产日产国产69 | 国产综合精品一区二区三区 | 最近免费观看的电影完整版 | 激情开心| 日本黄色免费电影网站 | 午夜婷婷网 | 黄色aaa级片 | 久久久在线视频 | 亚洲第一伊人 | 亚洲一区精品人人爽人人躁 | 在线观看视频色 | 久久99国产精品久久99 | 精品久久久久久久 | 91精品国产91久久久久福利 | 国产在线一区观看 | 亚洲精品 在线视频 | 中文字幕在线观看网 | 福利二区视频 | 国产免费久久av | 国产91精品一区二区 | 成年人黄色av | av电影在线不卡 | 亚洲成人资源 | av丝袜在线 | 久久黄色影视 | 在线播放国产一区二区三区 | 热re99久久精品国产66热 | 国产精品一区二区三区在线看 | 亚洲精品欧美专区 | 四虎影院在线观看av | av福利在线看 | 狠狠的操狠狠的干 | 欧美有色 | 一本一本久久a久久精品综合妖精 | 美女免费黄网站 | 日日摸日日碰 | 欧美性黄网官网 | 国产成人在线免费观看 | 99精品欧美一区二区三区 | 国产精品久久久视频 | 国产无套一区二区三区久久 | 欧美综合色在线图区 | av再线观看 | 免费看av片网站 | 久久国产高清 | 日日夜夜精品免费 | 91成人网页版 | 国产成人精品综合 | av一区在线 | 久久人网 |