學生在學習期間的主要工做時間分配程序員
9:00~ 9:30,認真聽同窗的學習階段中的分享,俗話說的好"三人行,必有我師";
數據庫
9:30~ 18:00,認真聽老師的課堂上課,而且要準備好一個手寫筆記本,好記性不如爛筆頭,固然我我的認爲記錄在電腦上,並不靠譜,並且在複習時還費眼,我從開始上學到如今就一直有在筆記本上寫寫畫畫的習慣;
編程
19:00~ 20:00,用一個小時的時間,回憶今天上課的知識點,這時筆記本的重要性就體現了,它能夠幫助咱們心無旁騖的複習和總結;
app
20:00~ 22:00,用來完成今天的做業及預習次日的內容,而且將做業中遇到的問題及預習時遇到的問題記錄下來,在次日上課時能夠拿出筆記本來問老師;框架
若是還有遇到須要時間去補習的內容,能夠在每一個週週6、週日,經過解決筆記本上的遺漏知識點來補習.異步
閱讀代碼ide
閱讀公司中已經處於迭代過程當中的代碼(理解公司前輩開發過程當中的開發思路);
函數
閱讀Github上的優秀的代碼框架(比較Forks與Stars的數量)(學習其餘優秀程序員編寫代碼功能時的思路);
學習
閱讀代碼的目的,是咱們要作到對項目代碼的執行流程和細節作到成竹在胸;測試
在閱讀代碼的過程當中,須要注意的流程:
1.首先複製一份原始代碼到當前路徑,而且保存爲文件名加日期;
例如:LODoudizhu2015-03-22
2.而後找到AppDelegate.m
文件,而且從程序的啓動流程中,閱讀相關的功能代碼;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //... //程序啓動流程}
3.嘗試註釋程序中的某行咱們認爲的重要性語句,而且運行程序看結果;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; //例如,以下行的代碼就很是重要,由於它決定了咱們的本程序是否能夠顯示界面 //[self.window makeKeyAndVisible]; LO_RootViewController *root = [[LO_RootViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root]; self.window.rootViewController = nav; return YES; }
4.當遇到與咱們指望的運行結果不一樣時,能夠經過進入該函數內部查看內部的實現代碼,而且重複第三步;
5.直到,咱們能夠將咱們負責的模塊功能的實現方式.
編寫代碼
編寫功能中的主要邏輯代碼(主要以實現功能爲主);
編程功能中須要測試邏輯是否正確的測試用例(主要以測試Bug爲主);
編寫提供給同事或者其餘人的接口代碼(主要以代碼使用方便爲主);
1.主要邏輯代碼剛剛寫完時,其實會很醜,有不少的if,for等等,舉例以下:
- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error { // if ([result.address isEqualToString:self.startAddressTF.text]) { // 說明當前編碼的對象是開始節點 self.startNode = [[BMKPlanNode alloc] init]; // 給節點的座標位置賦值 _startNode.pt = result.location; // 發起對目標節點的地理編碼 // 1.建立正向地理編碼選項對象 BMKGeoCodeSearchOption *geoOption = [[BMKGeoCodeSearchOption alloc] init]; geoOption.city = self.endCityTF.text; geoOption.address = self.endAddressTF.text; // 執行正向編碼 [self.getCodeSearch geoCode:geoOption]; // self.endNode = nil; }else{ self.endNode = [[BMKPlanNode alloc] init]; _endNode.pt = result.location; } if (_startNode != nil && _endNode != nil) { // 開始進行路線規劃 // 1.建立駕車路線規劃 BMKDrivingRoutePlanOption *drivingRoutOption = [[BMKDrivingRoutePlanOption alloc] init]; // 2.指定開始節點和目標節點 drivingRoutOption.from = _startNode; drivingRoutOption.to = _endNode; // 3.讓路線搜索服務對象搜索路線 [self.routeSearch drivingSearch:drivingRoutOption]; } }
2.用例測試代碼在編寫過程當中,實際上是最消耗時間的部分,由於要大量的舉例論證Bug:
// Use this for initialization void Start () { //打開數據庫 LOSQLiteTools.OpenDB("yihuiyun"); SQLObject[] list = LOSQLiteTools.SelectEntity (typeof(Student)); foreach (SQLObject item in list) { Debug.Log (item.ToString()); } }
3.當開始給同事編寫接口代碼時,要注意的地方就是方便些與擴展性的問題了:
#region 公開函數 /// <summary> /// 異步加載資源 /// </summary> public IEnumerator LoadAssetAsync (string assetBundleName) { //開始加載包裹 yield return StartCoroutine(LoadAssetBundle (assetBundleName)); } /// <summary> /// 異步加載場景 /// </summary> public IEnumerator LoadLevelAsync (string assetBundleName) { //加載資源包 yield return StartCoroutine(LoadAssetBundle (assetBundleName)); } #endregion