[ios學習]零基礎學習iOS開發如何分配時間

在培訓期間,學生的時間應該如何分配

學生在學習期間的主要工做時間分配程序員

  • 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
相關文章
相關標籤/搜索