你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 分享:iOS 統一編碼風格的四種有效辦法

分享:iOS 統一編碼風格的四種有效辦法

編輯:IOS開發基礎

下載.jpg

本文為投稿文章,作者:曉月(博客)

我們團隊中有二十個人,大神們都有自己的編程習慣,而新手們呢還沒有自己的風格,還有些如我本人不同時期的風格不一樣,這導致了我們的代碼有n種風格。 有的團隊覺得每個人自己的風格統一了就好,不能要求人人都死扣一些小細節; 有的團隊則采用了嚴格的代碼標准,強制所有人的代碼都是一個模子出來的,如google。

如果團隊內部可以統一風格,采用同一個代碼規范,讓不同人寫出來的程序可讀性基本一致或者接近,這樣對於新人來說,做過1個模塊後,在接觸別人代碼,別的模塊代碼的時候,無論開發還是維護都會更快上手,他的精力可以更多放在其他方面。同時,好的代碼規范,編程習慣也可以減少bug的產生,減少開發人員和測試人員的的時間成本。

統一編碼風格這個問題能難得到程序員麼?顯然不能。

代碼格式化 (Code Format)

有的小伙伴喜歡K&R風格,有的喜歡BSD風格。 有的小伙伴代碼鎖在一起,等號左右不空格,逗號不空格。

可以采用BBUncrustifyPlugin-Xcode插件,在save的時候會自動格式化,如

// 喜歡K&R風格的小伙伴
// 將左括號留在前一行的末尾
if(1){
    a=b;
}

// 在他保存代碼的時候就自動變成BSD風格啦
// 左右括號都單獨占一行
if (1)
{
    a = b;
}

在格式化的時候還做了額外的設置。 if和括號之間也加了空格,等號左右也加了空格。

代碼模板 (Code Template)

不同的小伙伴,類的代碼組織結構也不一樣,如我本人的ViewController類喜歡按照以下順序來組織代碼結構:

#pragma mark - def
#pragma mark - override
#pragma mark - api
#pragma mark - model event 
#pragma mark - view event
#pragma mark - private
#pragma mark - getter / setter

統一代碼結構可以對常用的類做代碼模板,如Handle,Model,ViewController,TableViewControoler,View類(模板的制作教程可以參考這篇文章)。

多才多藝的Panda還給模板都設計了統一的LOGO:

未標題-1.jpg

代碼片段(Code Snippets)

一些常用的代碼片段,也添加了快捷方式。

未標題-2.jpg

如單利方法,輸入qsi就自動出來啦。

+ (instancetype)sharedInstance
{
    static dispatch_once_t __singletonToken;
    static id __singleton__;
    dispatch_once( &__singletonToken, ^{ __singleton__ = [[self alloc] init]; } );
    return __singleton__;
}

代碼掃描 (Code Scan)

一個方法內的行數過長,復雜度過高的話,可以通過對項目進行靜態掃描來發現(靜態掃描的帖子可以參考這篇文章)。

它還可以發現如下問題:

  • 可能的bug - 空的if/else/try/catch/finally 語句

  • 未使用的代碼 - 未使用的局部變量和參數

  • 復雜的代碼 - 高圈復雜度,NPath復雜,高NCSS

  • 冗余代碼 - 多余的if語句和無用的括號

  • 壞味道的代碼 - 過長的方法和過長的參數列表

  • 不好的使用 - 倒邏輯和入參重新賦值

Script

為了方便安裝,可以將Code Format,Code Snippets,Code Scan,寫一個簡單的腳本:

#!/bin/bash

CURRENT_DIR=$(cd "$(dirname "$0")"; pwd)
PLUGIN_DIR="${HOME}/Library/Application Support/Developer/Shared/Xcode/Plug-ins/"
PLUGIN_CONFIG_DIR="${HOME}/.uncrustify"
SNIPPET_DIR="${HOME}/Library/Developer/Xcode/UserData/"
TEMPLATE_DIR="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/"

# 安裝代碼格式化插件
mkdir -p "${PLUGIN_DIR}"
sudo cp -rf "${CURRENT_DIR}/Plug-ins/UncrustifyPlugin.xcplugin" "${PLUGIN_DIR}"

# 格式化插件配置文件移動
mkdir -p "${PLUGIN_CONFIG_DIR}"
sudo cp -rf "${CURRENT_DIR}/uncrustify.cfg" "${PLUGIN_CONFIG_DIR}"

# # 安裝代碼模板
mkdir -p "${TEMPLATE_DIR}"
sudo cp -rf "${CURRENT_DIR}/Templates" "${TEMPLATE_DIR}"

# 安裝代碼塊
mkdir -p "${SNIPPET_DIR}"
sudo cp -rf "${CURRENT_DIR}/CodeSnippets" "$SNIPPET_DIR"

# Clean
cd "${PLUGIN_DIR}"
rm -rf __MACOSX

echo "\nPAPH Code Style successfuly installed! Please restart your Xcode."

演示的demo裡有配置好的格式化風格的插件,但是只放了一個代碼模板和一個單例的代碼片段,可以在這裡下載到:https://github.com/uxyheaven/XYStyle。

以上便是我們團隊關於代碼風格統一所作出的努力和嘗試。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved