Changing Legacy Code: With ConfidenceMaintaining and Migrating Working Code Changing Legacy Code with Confidence: Brian Ruth (he/him) brian.ruth@garmin.comPart 0: Legacy Code• It works* • It may not have tests, but has lifetime • It is currently making the company money • One person's bug is another's critical feature Legacy code has value *well enough, for some definition of "works"• Best practices and languages change developers may not have a firm understanding of project structure* • Supporting tools change The Legacy of Code *for some definition of "structure"• Preserve working code • Introduce testing • Gradual0 码力 | 114 页 | 982.54 KB | 6 月前3
Adventures with Legacy Codebases: Tales of Incremental Improvementv=90I0hH5-r5A A Case-study in Rewriting a Legacy GUI Library for Real-time Audio Software in Modern CLegacy Code …make sure new code is betterWhat is legacy code?What is legacy code? ● No tests ● Lotʼs of code TSANhttps://www.youtube.com/watch?v=vEtGtphI3lc Purging Undefined Behavior & Intel Assumptions in a Legacy C Codebase23 xkcd.com/2030/Improving with static analysis Success ● Incremental rollout of ASAN Unit Tests Integration E2EMoving up the testing pyramid Unit Tests DSP Regression VST3Changing legacy APIs should you?Breaking changes ● class templatechecked_value ● class template 0 码力 | 77 页 | 4.34 MB | 6 月前3
A Case-study in Rewriting a Legacy GUI Library for Real-time Audio Software in Modern C++real-time audio plug-ins | music, film, television, and radio iZotope Inc.Glass Properties Making a legacy run-time system compile-time safe iZotope Inc.What do I mean by property system? iZotope Inc.What0 码力 | 138 页 | 2.75 MB | 6 月前3
websockets Documentation
Release 9.0API. 3.1.1 Client websockets.legacy.client defines the WebSocket client APIs. 27 websockets Documentation, Release 9.0 Opening a connection await websockets.legacy.client.connect(uri, *, create_protocol=None InvalidURI – if uri is invalid • InvalidHandshake – if the opening handshake fails await websockets.legacy.client.unix_connect(path, uri='ws://localhost/', **kwargs) Similar to connect(), but for connecting Unix socket • uri (str) – WebSocket URI Return type Connect Using a connection class websockets.legacy.client.WebSocketClientProtocol(*, origin=None, ex- tensions=None, sub- protocols=None, ex- tra_headers=None0 码力 | 81 页 | 352.88 KB | 1 年前3
Drawing UML with PlantUML - PlantUML Language Reference Guide(Version 1.2020.23)Language Reference Guide (1.2020.23) 73 / 310 4 ACTIVITY DIAGRAM (LEGACY) 4 Activity Diagram (legacy) This is the old Activity Diagram (legacy) syntax, to see the new current version see: Activity Diagram syntax: PlantUML Language Reference Guide (1.2020.23) 74 / 310 4.4 Branches 4 ACTIVITY DIAGRAM (LEGACY) • -down-> (default arrow) • -right-> or -> • -left-> • -up-> @startuml (*) -up-> "First Action" PlantUML Language Reference Guide (1.2020.23) 75 / 310 4.5 More on Branches 4 ACTIVITY DIAGRAM (LEGACY) Unfortunately, you will have to sometimes repeat the same activity in the diagram text: @startuml0 码力 | 311 页 | 3.15 MB | 1 年前3
PlantUML 1.2020.22 Language Reference GuideLanguage Reference Guide (1.2020.22) 62 / 298 4 ACTIVITY DIAGRAM (LEGACY) 4 Activity Diagram (legacy) This is the old Activity Diagram (legacy) syntax, to see the new current version see: Activity Diagram syntax: PlantUML Language Reference Guide (1.2020.22) 63 / 298 4.4 Branches 4 ACTIVITY DIAGRAM (LEGACY) • -down-> (default arrow) • -right-> or -> • -left-> • -up-> @startuml (*) -up-> "First Action" PlantUML Language Reference Guide (1.2020.22) 64 / 298 4.5 More on Branches 4 ACTIVITY DIAGRAM (LEGACY) Unfortunately, you will have to sometimes repeat the same activity in the diagram text: @startuml0 码力 | 299 页 | 3.07 MB | 1 年前3
PlantUML 을사용해서 UML 그리기 - PlantUML 언어참조가이드(Version 1.2020.23)QA-5261] PlantUML 언어참조가이드 (1.2020.23) 72 / 306 4 ACTIVITY DIAGRAM (LEGACY) 4 Activity Diagram (legacy) This is the old Activity Diagram (legacy) syntax, to see the new current version see: Activity Diagram using the following syntax: PlantUML 언어참조가이드 (1.2020.23) 73 / 306 4.4 Branches 4 ACTIVITY DIAGRAM (LEGACY) • -down-> (default arrow) • -right-> or -> • -left-> • -up-> @startuml (*) -up-> "First Action" process] (*) endif @enduml PlantUML 언어참조가이드 (1.2020.23) 74 / 306 4.5 브랜치에덧붙임 4 ACTIVITY DIAGRAM (LEGACY) Unfortunately, you will have to sometimes repeat the same activity in the diagram text: @startuml0 码力 | 307 页 | 3.16 MB | 1 年前3
PlantUML 1.2020.22 언어참조가이드deployment] PlantUML 언어참조가이드 (1.2020.22) 61 / 294 4 ACTIVITY DIAGRAM (LEGACY) 4 Activity Diagram (legacy) This is the old Activity Diagram (legacy) syntax, to see the new current version see: Activity Diagram using the following syntax: PlantUML 언어참조가이드 (1.2020.22) 62 / 294 4.4 Branches 4 ACTIVITY DIAGRAM (LEGACY) • -down-> (default arrow) • -right-> or -> • -left-> • -up-> @startuml (*) -up-> "First Action" process] (*) endif @enduml PlantUML 언어참조가이드 (1.2020.22) 63 / 294 4.5 브랜치에덧붙임 4 ACTIVITY DIAGRAM (LEGACY) Unfortunately, you will have to sometimes repeat the same activity in the diagram text: @startuml0 码力 | 295 页 | 3.08 MB | 1 年前3
PlantUML 1.2021.3 Language Reference GuideLanguage Reference Guide (1.2021.2) 86 / 415 5 ACTIVITY DIAGRAM (LEGACY) 5 Activity Diagram (legacy) This is the old Activity Diagram (legacy) syntax, to see the new current version see: Activity Diagram (default arrow) PlantUML Language Reference Guide (1.2021.2) 87 / 415 5.4 Branches 5 ACTIVITY DIAGRAM (LEGACY) • -right-> or -> • -left-> • -up-> @startuml (*) -up-> "First Action" -right-> "Second Action" PlantUML Language Reference Guide (1.2021.2) 88 / 415 5.5 More on Branches 5 ACTIVITY DIAGRAM (LEGACY) @startuml (*) --> "check input" If "input is verbose" then --> [Yes] "turn on verbosity" --> "run0 码力 | 416 页 | 4.33 MB | 1 年前3
PlantUML 1.2021.1 Language Reference GuideLanguage Reference Guide (1.2021.1) 85 / 391 5 ACTIVITY DIAGRAM (LEGACY) 5 Activity Diagram (legacy) This is the old Activity Diagram (legacy) syntax, to see the new current version see: Activity Diagram (default arrow) PlantUML Language Reference Guide (1.2021.1) 86 / 391 5.4 Branches 5 ACTIVITY DIAGRAM (LEGACY) • -right-> or -> • -left-> • -up-> @startuml (*) -up-> "First Action" -right-> "Second Action" PlantUML Language Reference Guide (1.2021.1) 87 / 391 5.5 More on Branches 5 ACTIVITY DIAGRAM (LEGACY) @startuml (*) --> "check input" If "input is verbose" then --> [Yes] "turn on verbosity" --> "run0 码力 | 392 页 | 4.12 MB | 1 年前3
共 946 条
- 1
- 2
- 3
- 4
- 5
- 6
- 95













