ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
¾±°¿³§ÍŶӿª·¢Êµ¼ù¾­Ñé
shengxuanwei
2015-06-29
Á÷³Ì
Process
Work?ow
Begin With Milestone
? ??Ä¿±ê
? ¹¦ÄÜ
? ÔðÈÎ
? ÒÀÀµ
? ?·çÏÕ
? MRD
One Feature, One Branch
5
¿ª·¢¾ÍÏñ´ò¹Ö£¬¹ÖÎï¾ÍÊǾ±²õ²õ³Ü±ð²õ
Öع¹ÓÀ?ÎÞ?Ö¹¾³
ÒÔCode Reviewer×Ë̬¶Ô´ýÄãµÄ´úÂë
How to make reviewers life harder
? large commits
? reformatting of code
? lots of refactoring
? omit issue number when committing
http://kaczanowscy.pl/tomek/sites/default/?les/2012_code_reviews.png
iOS Testing
http://neglectedpotential.com/wp-content/uploads/iOS-Testing-Mind-Map-1.2.png
¹æ·¶
Speci?cation
Speci?cation
? ¿ª·¢¹æ·¶
? Éè¼Æ?Îĵµ
? ½Ó?¿ÚÖ¸ÄÏ
Developer¡¯s Guide
? Objective-C Style Guide
? Git Flow Spec
? Git Commit Spec
? Logging Spec
? ¡­¡­
Git Flow Work?ow
https://www.atlassian.com/git/tutorials/comparing-work?ows/feature-branch-work?ow
Telling Stories With Your Git History
? ?Ò»¸ö commit Ö»×ö?Ò»¼þÊÂÇ飬?±ÈÈç?Ò»¸ö feature£¬?Ò»
¸öbug?x
? ÿ¸ö commit µÄÁ£¶È²»ÒªÌ«?´ó£¬?´óÐÍ feature ·Ö½â³É
¶à¸ö?×Ó feature ×ö¶à¸ö commit
? git push ֮ǰÔÚ±¾µØ½ø?ÐÐ git rebase
? ÿ¸ö commit ÐèҪ׫дÏ꾡µÄ commit message£¬Ïà
¹Ø issue ÐèҪעÃ÷ issue number¡£¹Ø±Õ¶ÔÓ¦ issue£¬
ÐèҪעÃ÷ close #issue-number.
https://about.futurelearn.com/blog/telling-stories-with-your-git-history/
¨C Martin Fowler
¡°Code as Documentation¡±
¼Ü¹¹
Architecture
MVC
MEGA-ViewController
http://code.oursky.com/viper-ios-architecture-beyond-mega-viewcontroller/
ʼþ¡¢Í¨Öª¡¢??ÍøÂçÇëÇó¡¢UIÏÔ?ʾ¡¢ÒµÎñÂß¼­¡¢?Óû§Êä?Èë¡¢Êý¾ÝÕýÈ·ÐÔÑéÖ¤¡¢ÄÚ
´æºÍ??ÍøÂçÌõ¼þ¼ì²â£¬?ÐÐΪͳ¼Æ£¬»º´æ£¬µÇ¼״̬ÈÏÖ¤£¬?Ò³?ÃæÇл»...
Light View Controllers
? Move Domain Logic into the Model
? Move View Code into the View Layer
? Separate Out Data Source and Other Protocols
? Creating the Store Class
? Move Web Service Logic to the Model Layer
? Communication
http://www.objc.io/issues/1-view-controllers/lighter-view-controllers/
A little-monster-collection
http://code.oursky.com/viper-ios-architecture-beyond-mega-viewcontroller/
VIPER
Single Responsibility Principle
VIPER
? View (UserInterface)
? Presenter
? Interactor
? Entity
? Routing (Wireframe)
VIPER Checklist
? Views and view controllers receive user interactions and pass
them to Presenters for decision making
? Presenters contain the view logics and prepare content for display
and reacting to user inputs
? Presenters should not know about the existence of all UIViews
? Interactors contain business logics and they should be
independent of UI
? Entities are model objects only manipulated by Interactors
? Wireframe is the only place to de?ne screen navigations and their
transition animations
Bene?ts of VIPER
? Easy to iterate on
? Collaboration friendly
? Separated out concerns
? Spec-ability
? Vipergen
Other Frameworks
? AOP (Aspects)
? DeepLink (DeepLinkKit)
? AutoLayout (Masonry)
? Logging (CocoaLumberjack)
?¹¤¾ß
Tool
Å×ÆúSVN£¬Óµ±§Git
? Branching and Merging
? Small and Fast
? Distributed
? Data Assurance
? The Staging Area
GitLab
? Activity Stream
? Issue Tracking
? Git Powered Wiki
? Code Review
? Git Hooks
? Services
Choosing the Right IDE
? Performance
? Editor (syntax highlight, autocomplete)
? Extensions
? Refactoring
? Vi mode
Linter
? uncrustify
? OCLint
? FBInfer
CocoaPods
? Dependency Manager
? Pod?le
? Podspec
? Submodule
Other Tools
? Dash
? Reveal
? Charles
? Paw
? SmartGit
? Beyond Compare
¹æ»®
Planning
One Month
? VIPERing
? Deep Link
? Code Quality
Three Month
? Performance (UI, Network)
? Crash
? Unit Test
? iOS 9
? iPad Universal
Six Month
? Modularization
? CI
? UI Automation
? Swift
The End.
References
? http://twasink.net/2004/05/17/refactoring-vs-re-architecting-vs-redesign-vs-
rewriting/
? http://mp.weixin./s?__biz=MjM5NTIyNTUyMQ%3D
%3D&idx=1&mid=208090692&sn=ebcac43c3af9d07a9916bcfeca3bbf2a
? https://netguru.co/blog/a-quick-guide-to-peer-code-review
? https://www.atlassian.com/git/tutorials/comparing-work?ows/feature-branch-
work?ow
? https://about.futurelearn.com/blog/telling-stories-with-your-git-history/
? http://code.oursky.com/viper-ios-architecture-beyond-mega-viewcontroller/
? https://www.youtube.com/watch?v=4XpnKHJAok8
? http://product.hubspot.com/blog/architecting-a-large-ios-app-with-cocoapods

More Related Content

¾±°¿³§ÍŶӿª·¢Êµ¼ù¾­Ñé