【資料作成】（コーディング規約）定義 コーディング規約の決め方など

# はじめに

プログラミングのメソッド名でどのように名前つけたらいいのか悩む時ないですか？

iOSの開発現場できになる用語のズレをある程度まとめていきたいと思います。

そこで、コーディング規約の決め方はそれぞれのプロジェクト、会社によって決められている場合があったりします。

変数やメソッドクラス名などの作り方は、命名規則「キャメルケース」「スネークケース」「ケバブケース」といった形で命名規則があります。

命名規則がなく、バラバラになっていると可読性が悪くなることで改修コストが増えたり、バグの原因になる可能性も出てきます。

関数や変数、class名などで用いられるいろんな命名規則

|--|--|--|
|:--:|:--:|:--|
|【キャメルケース】|camelCase|先頭の単語だけ小文字にするのがローワーキャメルケースと呼ばれます。PHPやjsなどの関数で使われることが多い|
|【パスカルケース】|PascalCase|全ての単語の先頭を大文字にするのがアッパーキャメルケースもしくはパスカルケース単語の先頭を大文字にする命名規則です。|
|【スネークケース】|snake_case|単語の間をアンダーバーでつなぐ命名規則です。DBなどで扱われる値に使用されることが多いようです。|
|【アッパーケース】|UPPER_CASE|単語の間をアンダーバーでつなぐ命名規則です。定数などで扱われる値に使用されることが多いようです。|
|【ケバブケース】|kebab-case|単語の間をハイフンでつなぐ命名規則です。HTMLではclass名であったり、ファイル名などでもよく見かけます。|

#### ハイフンには要注意！
このように、それぞれ違いがあるのですが、ハイフンを使う場合には少し注意が必要です。jsなどでは、ハイフンがマイナスの記号として認識されますので変数などには使えません。またWordPressなどでもスラッグなどに使うとDB側で不整合の原因となる可能性があるため推奨されていないようです。

あくまで例ですが
キャメルケース　→　プログラミングでのメソッド、関数や変数
パスカルケース　→　プログラミングでのクラス名
スネークケース　→　DBなどで扱う値
アッパーケース　→　定数などで扱う値
ケバブケース　→　HTMLのclass名

例

初期化する
initialize(MethodName)

配置、組立、設定
setup(MethodName)

読み込み
load(MethodName)

再読み込み
reload(MethodName)

成功
success(MethodName):(Response)

失敗
failure(MethodName):(Error)

## 型系
整数型
int(MethodName)

整数型
xxxxInteger
xxxxCode
xxxxStatus

小数点型
float(MethodName)

小数点型
CGFloat(MethodName)

整数型(short)
short(MethodName)

整数型(long)
long(MethodName)

不動小数点型
double(MethodName)

## Boolean系
論理型
isXxxx
is(MethodName)
* YES / NO状態でわかる
* iOSの場合はこの書き方をよく用いますね。
hasXxxx
has(MethodName)
* 含む場合
* iOSの場合はこの書き方をよく用いますね。
canXxxx
can(MethodName)
* できるできないで判定できる場合
* iOSの場合はこの書き方をよく用いますね。
xxxxBoolean
(MethodName)Boolean

## Number系
数字型
xxxxNumber
(MethodName)Number

## Value系
構造体型
xxxxValue
(MethodName)Value

## String系
文字型
xxxxString
(MethodName)String
xxxxText
(MethodName)Text
xxxxIdentifier
(MethodName)Identifier
xxxxName
(MethodName)Name
xxxxTitle
(MethodName)Title
xxxxDetail
(MethodName)Detail

## Array系
配列型
xxxxArray
(MethodName)Array
xxxxList
(MethodName)List
xxxxItemList
xxxxItems
(MethodName)Items
xxxxTitles
(MethodName)Titles
xxxxCondisions
(MethodName)Condisions

## Dictionary系
辞書型
xxxxDictionary
(MethodName)Dictionary
xxxxDic
(MethodName)Dic
xxxxInfo
(MethodName)Info
xxxxItem
(MethodName)Item
xxxxCondision
(MethodName)Condision

## ビュー系
ビュークラス
xxxxView
(ClassName)View

イメージビュークラス
xxxxImageView
(ClassName)ImageView

テーブルビュークラス
xxxxTableView
(ClassName)TableView
テーブルビュークラス
xxxxListView
(ClassName)ListView

コレクションビュークラス
xxxxCollectionView
(ClassName)CollectionView

スクロールビュークラス
xxxxScrollView
(ClassName)ScrollView

コンテンツビュークラス
xxxxContentsView
(ClassName)ContentsView

## セル系
テーブルセル・コンテンツセル
xxxxCell
(ClassName)Cell

テキストフィールドクラス
xxxxTextField
(ClassName)TextField

テキストビュークラス
xxxxTextView
(ClassName)TextView

ボタンクラス
xxxxButton
(ClassName)Button
- (IBAction)tapped(ClassName)Button
- (IBAction)onClick(ClassName)Button

ボタン判定用
clicked(ClassName)Button
ボタン判定用
clickOn

スイッチクラス
xxxxSwitch
(ClassName)Switch

スライダークラス
xxxxSlider
(ClassName)Slider

セグメントクラス
xxxxSegmentControl
(ClassName)SegmentControl

ページクラス
xxxxPageControl
(ClassName)PageContro

インジケータークラス
xxxxIndicator
(ClassName)Indicator
xxxxActivityIndicator
(ClassName)ActivityIndicator
xxxxLoadIndicator
(ClassName)LoadIndicator


共通
CommonClassName

上記はあくまで例です

PHP / Phthon / Swift / ObjectiveC など

## ヨーダ記法
int status = 1;

const int STATUS_OK = 200
if (status == STATUS_OK)  {/*  処理  */} //代入してif条件に処理
if (STATUS_OK == status)  {/*  処理  */} //代入してif条件に処理
if (status = STATUS_OK)  {/*  処理  */} //代入してif条件に突入
if (STATUS_OK = status)  {/*  処理  */} //constに代入できないのでコンパイルエラー

皆さんのご意見も伺いたいですね。

## 関連記事

---

【About】(http://qiita.com/sunstripe) - サンストライプ

---

## 制作チーム：サンストライプ

[![sunstripe_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80600/322f2d60-f19d-af9e-2b6f-7290ca546848.png)](http://sunstripe.main.jp/)
http://sunstripe.main.jp/

(月１ WEBコンテンツをリリースして便利な世の中を作っていくぞ！！ボランティアプログラマー/デザイナー/イラストレーター/その他クリエイター声優募集中!!)

緩募


### 地域情報 THEメディア
THE メディア 地域活性化をテーマに様々なリリース情報も含め、記事をお届けしてます！！
https://the.themedia.jp/

### ゼロからはじめる演劇ワークショップ
多様化の時代に向けて他者理解を鍛える

https://workshop.themedia.jp/

### プログラミングワークショップ・ウェブ塾の開講！！！
様々なテーマでプログラミングに囚われずに取り組んでいきます。
詳しくはこちら　↓　↓　↓　↓　↓　↓　↓　↓
[プログラミングサロン 月１だけのプログラミング学習塾](https://workshop.themedia.jp/posts/7057553?fbclid=IwAR32CfRQ7RvDOhvuogoSwqxDLMOU7Jvuzljlnx-TMc27qBPX1BnWsfLcBR8
)

### 協力応援 / 支援者の集い
## チーム：サンストライプ
https://twitter.com/sunstripe2011

#### プログラミングラボ
https://twitter.com/PLab2020

一緒にポートフォリオを作りませんか？現場の体験やそれぞれの立場から年齢関係なく作品を作りたい方々と一緒にチームを作って、作品を作っています。現場に行きたい人には、職場紹介や職場の体験や悩み相談なども受けております。
様々な職種からプログラミングの知識を得たい、デザインの知識を得たい、データーベースの知識を得たいという人が集まっております。
週１のミーティングにそれぞれの近況と作業報告して、たまにリモート飲み会などをしております！！

興味がある方は、DMに話しかけてみてください。

#### トラストヒューマン
http://trusthuman.co.jp/
私たちは何よりも信頼､人と考えてます｡

｢コンサルティング｣と｢クリエイティブ｣の両角度から｢人材戦略パートナー｣としてトータル的にサポートします！！

### キャリア教育事業

#### 青空プログラミング
[![青空プログラミング100px.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80600/603d53ab-828b-645e-a415-1b6f158d7356.png)](https://actcoin.jp/project/detail.php?id=600)

[![ダウンロード (9).jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80600/9bde9318-28c2-ce74-d4c5-326168061bcc.jpeg)](https://www.youtube.com/hashtag/%E9%9D%92%E7%A9%BA%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

#### 広域学習支援プラットフォーム『のびのび日和』
https://slc-lab.amebaownd.com/

#スポンサー募集

## ネリム
https://nerim.co.jp/
配信事業などを映像コンテンツなどの制作しております

## ビヨンドXプロジェクト

[ビヨンドXプロジェクト全体会議](https://www.youtube.com/playlist?list=PLaR6-YWiGWkYhEHWnt8f1z-JC0g3nwwC9)