1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

変数・関数(メソッド)・クラス名接頭辞・接尾辞チートシート

Last updated at Posted at 2025-02-17

みなさんコーディング中に変数・関数(メソッド)・クラスの名前を悩みませんか?また,プロジェクト内で命名規則を定めたいケースはありますか?本記事では、変数、関数、クラス等の識別子に用いられる接頭辞および接尾辞の種類を従来よりもさらに豊富に紹介する.
各要素の命名規則はコードの可読性および保守性を向上させる重要な要素であり,ここで紹介する使用例を参考に,プロジェクトやチームごとのルールに合わせた統一的な命名を実践していただきたい.

他のチートシート

git/gh コマンド(gitコマンド以外にもgitの概念も書いてあります)

lazygit

Docker コマンド(dockerコマンド以外にもdockerの概念の記事へのリンクもあります)

ステータスコード

TypeScript

Go/Gorm

Ruby・Ruby on Rails

SQL

Vim

プルリクエスト・マークダウン記法チートシート

ファイル操作コマンドチートシート

VSCode Github Copilot拡張機能

OpenAI Assistants API

GitHub API

他のシリーズ記事

TypeScriptで学ぶプログラミングの世界
プログラミング言語を根本的に理解するシリーズ

情報処理技術者試験合格への道[IP・SG・FE・AP]
情報処理技術者試験に出題されるコンピュータサイエンス用語の紹介や単語集

Project Gopher: Unlocking Go’s Secrets
Go言語や標準ライブラリの深掘り調査レポート

1. 変数の命名規則

変数は扱うデータの性質や役割を的確に表現する必要がある.

1.1 変数の接頭辞一覧

接頭辞 意味 採用例
is 真偽値を示し、状態や条件を表す isActive, isEnabled, isVisible
has 保有しているかどうかを示す hasAccess, hasItems, hasError
can 可能性・許可の有無を示す canExecute, canSave, canLoad
m クラスのメンバー変数であることを示す mUserName, mAccountBalance
s 静的変数/クラス変数であることを示す sInstanceCount, sConfig
g グローバル変数を示す gHttpClient, gUserSettings
n 数値型であることを強調する nCount, nTotal, nIndex
str 文字列型であることを明示する strName, strMessage, strUrl
lst リストまたは配列の集合であることを示す lstItems, lstRecords
dict 辞書型またはマッピングを扱う変数であることを示す dictUserData, dictConfig
p ポインタ型(C/C++等)を示す pBuffer, pData
obj オブジェクト型であることを示す objUser, objCar
fn 関数やコールバック関数を保持する変数として示す fnCallback, fnProcessor

使用例

is

JavaScript

let isActive = true;  

Python

isValid = True

Java

boolean isComplete = false;

has

JavaScript

const hasItems = (items.length > 0);  
Ruby
```rb
has_errors = errors.any?  

Java

boolean hasAccess = user.hasAccess();

can

Python

def canExecute(task):  
return task.is_ready()  

TypeScript

const canSave: boolean = checkSavePermission(); 

C#

bool canLoad = loader.CanLoad();

m

C++

class User {  
private:  
    std::string mUserName;  
};  

Java

private String mPassword;  

C#

private int mAge;

s

Java

public static int sInstanceCount = 0;

C++

static int sCounter;

C#

public static string sConfig = "Default";

g

C

int gHttpClient = initializeClient();  

JavaScript

var gUserSettings = {};

PHP

$gConnection = connectDB();

n

Java

int nTotal = 100; 

JavaScript

let nIndex = 0;  

C#

int nCount = 42;

str

JavaScript

const strMessage = "Hello World"; 

Python

strTitle = "Welcome"  

Java

String strUrl = "https://example.com";

lst

Python

lstItems = [1, 2, 3]

JavaScript

let lstRecords = [record1, record2];  

Java (ArrayList使用)

List<String> lstNames = new ArrayList<>();

dict

Python

dictConfig = {"mode": "dark", "timeout": 30} 

JavaScript (オブジェクトとして)

const dictUserData = {name: "Alice", age: 25};

C# (Dictionary使用)

Dictionary<string, int> dictScores = new Dictionary<string, int>();

p

C/C++

int* pData = &data;  

Objective-C

id *pObject = &object;

obj

JavaScript

let objUser = { name: "Bob", age: 30 }; 

Java

Object objCar = new Car();

fn

JavaScript

const fnCallback = () => { console.log("Called back"); }; 

Python

fn_processor = lambda x: x * 2;

1.2 変数の接尾辞一覧

接尾辞 意味 採用例
Count 個数や数量を示す userCount, errorCount
List リストまたはコレクションであることを示す productList, orderList
Array 配列であることを示す scoreArray, dataArray
Map キーと値の対応を示すマッピング configMap, routeMap
Id 識別子を示す userId, orderId, productId
Flag 真偽情報を示すフラグ errorFlag, debugFlag, retryFlag
Num 数値型であることを示す ageNum, countNum
Val 値や結果を示す totalVal, tempVal
Ptr ポインタ型(C/C++等)を示す bufferPtr, dataPtr

使用例:

Count

Java

int userCount = users.size();

Python

item_count = len(items)  

JavaScript

const errorCount = errors.length;

List

Python

userList = ["Alice", "Bob", "Charlie"]  

JavaScript

let productList = ["Laptop", "Tablet", "Smartphone"];  

Java (ArrayList 使用)

List<Order> orderList = new ArrayList<>();

Array

JavaScript

const scoreArray = [95, 82, 77]; 

Java

int[] dataArray = {1, 2, 3, 4};  

C#

string[] idArray = new string[] { "ID1", "ID2", "ID3" };

Map

Java

Map<String, String> configMap = new HashMap<>(); 

Python (辞書として)

user_map = {"Alice": 25, "Bob": 30}

C#

Dictionary<int, string> routeMap = new Dictionary<int, string>();

Id

C#

int userId = 1001;

JavaScript

const orderId = "ORD12345"; 

PHP

$productId = 987;

Flag

C

bool errorFlag = false;

JavaScript

let debugFlag = true;  

Python

retry_flag = False;

Num

Java

int ageNum = 30;

JavaScript

let countNum = 5;

C#

int scoreNum = 88;

Val

JavaScript

const totalVal = price * quantity;

Python

temp_val = calculate_value()

Java

double resultVal = computeResult();

Ptr

C/C++

char* bufferPtr = malloc(256);

Objective-C

id *objectPtr = &obj;

2. 関数の命名規則

関数(またはメソッド)は、実行する動作や処理内容を明確に命名する必要があるである.

2.1 関数の接頭辞一覧

接頭辞 意味 採用例
get データの取得処理を示す getUserInfo, getAccountDetails
set データの設定処理を示す setUserName, setConfiguration
update 更新処理を示す updateRecord, updateUserData
calculate 計算処理を示す calculateTotal, calculateDiscount
process 入力やデータ処理を示す processInput, processOrder
fetch 外部ソースからの取得処理を示す fetchData, fetchResults
init 初期化処理を示す initValues, initConfiguration
create 新規作成を示す createUser, createRecord
build オブジェクトや構造の構築を示す buildQuery, buildUserProfile
load データの読み込みを示す loadData, loadConfiguration
save データの保存処理を示す saveUser, saveRecord
delete データの削除処理を示す deleteUser, deleteRecord
validate 入力やデータの検証処理を示す validateInput, validateForm
format データのフォーマット処理を示す formatDate, formatMessage
filter 指定条件によるデータの抽出処理を示す filterItems, filterResults

使用例

get

JavaScript

function getUserInfo(userId) {  
// ユーザー情報の取得処理である  
return database.getUserById(userId);  
} 

Python

def get_account_details(account_id):  
# アカウント情報を取得する処理である  
return db.fetch_account(account_id)

set

Python

def set_user_name(user, name):  
user.name = name  

Java

public void setConfiguration(Config config) {  
this.config = config;  
}

update

Java

public void updateRecord(Record record) {  
// レコード更新処理である  
} 

C++

void updateUserData(User &user) {  
    // ユーザーデータの更新処理である  
}

calculate

C++

double calculateTotal(double price, int quantity) {  
return price * quantity;  
}

JavaScript

function calculateDiscount(price, rate) {  
return price * rate;  
}

process

C#

void processInput(string input) {  
// 入力データの処理である  
} 

Python

def process_order(order):  
# 注文情報の処理である  
return order.process()

fetch

Python

def fetchData(url):  
# URLからデータを取得する処理である  
return requests.get(url)

TypeScript

function fetchResults(apiEndpoint: string): Promise<any> {  
return fetch(apiEndpoint).then(res => res.json());  
}

init

JavaScript

function initValues() {  
// 初期値設定処理である  
return { count: 0, items: [] };  
}  

Java

public void initConfiguration() {  
// 設定初期化の処理である  
}

create

Ruby

def create_user(name, email)  
# ユーザー生成処理である  
User.new(name, email)  
end  

C#

User createRecord(string data) {  
// レコード作成処理である  
return new User(data);  
}

build

JavaScript

function buildQuery(params) {  
// クエリ文字列生成処理である  
return Object.keys(params).map(key => key + "=" + params[key]).join("&");  
} 

Java

public Query buildUserProfile(User user) {  
// ユーザープロファイルの構築処理である  
return new Query(user);  
}

load

JavaScript

function loadData(sourceUrl) {  
// データ読み込み処理である  
return fetch(sourceUrl);  
} 

Python

def load_configuration(file_path):  
# 設定ファイルの読み込み処理である  
with open(file_path) as f:  
    return json.load(f)

save

JavaScript

function saveRecord(record) {  
// レコード保存処理である  
database.save(record);  
}  

C#

void saveUser(User user) {  
// ユーザー情報の保存処理である  
}

delete

Java

public void deleteUser(int userId) {  
// ユーザー削除処理である  
}  

Python

def delete_record(record_id):  
# レコード削除処理である  
db.delete(record_id)

validate

JavaScript

function validateInput(input) {  
// 入力値検証処理である  
return input !== "";  
}  

Python

def validate_form(data):  
# フォームデータ検証処理である  
return all(data.values())

format

Python

def format_date(date_obj):  
# 日付フォーマット処理である  
return date_obj.strftime("%Y-%m-%d")

JavaScript

function formatMessage(msg) {  
// メッセージフォーマット処理である  
return msg.trim();  
}

filter

JavaScript

function filterItems(items, predicate) {  
// 条件によるリストフィルタリング処理である  
return items.filter(predicate);  
}  

Python

def filter_results(results, condition):  
# 結果のフィルタリング処理である  
return [r for r in results if condition(r)];

2.2 関数の接尾辞一覧

接尾辞 意味 採用例
Handler イベントハンドラや応答処理を示す clickHandler, keyPressHandler
Callback コールバック用の関数を示す loadCallback, errorCallback
Function 汎用的な処理関数を示す renderFunction, computeFunction
Async 非同期処理で動作する関数を示す fetchDataAsync, processAsync
Sync 同期処理を明示する関数の名称として示す updateSync, loadSync

使用例

Handler

JavaScript

function clickHandler(event) {  
    // クリックイベント処理である  
    console.log("クリックされました");  
}  

C#

void keyPressHandler(object sender, KeyEventArgs e) {  
    // キー入力イベント処理である  
}

Callback

Node.js

function loadCallback(err, data) {  
    if (err) {  
        console.error(err);  
        return;  
    }  
    console.log("データ読み込み成功:", data);  
}  

JavaScript

const errorCallback = (error) => {  
    console.error("エラー発生:", error);  
};

Function

Java

public void renderFunction() {  
    // UIレンダリング処理である  
}  

Python

def compute_function(x, y):  
    # 計算処理である  
    return x + y

Async

JavaScript (async/await)

async function fetchDataAsync(url) {  
    const response = await fetch(url);  
    return await response.json();  
}  

Python (asyncio)

async def process_async(data):  
    # 非同期処理を実行するである  
    await asyncio.sleep(1);  
    return data;

Sync

Java

public void loadSync() {  
    // 同期処理でデータ読み込みを行うである  
} 

Python

def update_sync(record):  
    # 同期的に更新処理を行うである  
    record.update();

3. クラスの命名規則

クラス名はそのクラスが表す概念や役割を明確に示すため、通常はパスカルケース(UpperCamelCase)で記述するである.

3.1 クラスの接頭辞一覧

接頭辞 意味 採用例
Abstract 抽象クラスであることを示す AbstractController, AbstractShape
I インターフェイスを示す(主に C# や Java で採用) IUserService, IAccountManager
Base 共通機能/基底クラスを示す BaseController, BaseModel
Mock モックまたはテスト用の実装を示す MockUserService, MockRepository
Fake 疑似実装(テストダブル)を示す FakePaymentGateway, FakeUserRepository
Stub スタブ実装を示す StubEmailService, StubLogger

使用例

Abstract

Java

public abstract class AbstractController {  
    public abstract void handleRequest();  
}  

C++

class AbstractShape {  
public:  
    virtual double calculateArea() = 0;  
};

I

C#

public interface IUserService {  
    User GetUserInfo(int userId);  
}  

Java

public interface IAccountManager {  
    void manageAccount();  
}

Base

JavaScript

class BaseController {  
    constructor() {  
        // 共通の初期化処理である  
    }  
} 

PHP

    class BaseModel {  
        protected $db;  
        public function __construct($db) {  
            $this->db = $db;  
        }  
    }

Mock

JavaScript (テスト用)

class MockUserService {  
    getUser() {  
        return { id: 1, name: "Test User" };  
    }  
}  

Java

public class MockRepository {  
    // モック実装である  
}

Fake

Java

public class FakePaymentGateway {  
    // 疑似的な支払い処理を実装するである  
}  

Python

class FakeUserRepository:  
    def get_user(self, user_id):  
        return {"id": user_id, "name": "Fake User"}

Stub

JavaScript

class StubLogger {  
    log(message) {  
        // ログ出力のスタブ実装である  
    }  
} 

Python

class StubEmailService:  
    def send_email(self, to, subject, body):  
        # スタブ実装でメール送信を模倣するである  
        pass;

3.2 クラスの接尾辞一覧

接尾辞 意味 採用例
Manager 管理や統括の役割を持つクラスを示す UserManager, SessionManager
Controller 制御や調整を行うクラスを示す MainController, LoginController
Service ビジネスロジックやサービス提供を行うクラスを示す PaymentService, EmailService
Helper 補助的な機能を提供するクラスを示す DateHelper, StringHelper
Repository データの永続化やアクセスを行うクラスを示す UserRepository, ProductRepository
Exception 例外処理を表すクラスである CustomException, DatabaseException
Model エンティティやデータモデルを示すクラスである UserModel, ProductModel
View ユーザーインターフェイス(UI)表示を行うクラスである UserView, ProductView
Factory オブジェクト生成を担うクラスを示す UserFactory, ConnectionFactory
Adapter インターフェイス変換や適合処理を行うクラスを示す JsonAdapter, XmlAdapter
Decorator 既存オブジェクトに機能追加するクラスを示す LoggingDecorator, CachingDecorator
Strategy 戦略パターンの実装を行うクラスを示す SortingStrategy, CompressionStrategy
Singleton 単一インスタンス生成を保証するクラスである LoggerSingleton, ConfigSingleton
Util 補助的なユーティリティ機能を提供するクラスを示す StringUtil, DateUtil

使用例

Manager

Java

public class UserManager {  
    // ユーザー管理処理の実装である  
}  

Python

class SessionManager:  
    def __init__(self):  
        self.sessions = {}  

C#

public class ResourceManager {  
    // リソース管理処理を実装するである  
}

Controller

JavaScript (React コンポーネントとして)

class MainController extends React.Component {  
    render() {  
        return (<div>Main Controller</div>);  
    }  
}  

Java (Spring MVC 惣例)

@Controller  
public class LoginController {  
    // ログイン制御処理である  
}

Service

Ruby

class PaymentService  
  def process_payment(amount)  
    # 決済処理を実装するである  
  end  
end  

C#

public class EmailService {  
    public void SendEmail(string recipient) {  
        // メール送信処理を実装するである  
    }  
}

Helper

PHP

class DateHelper {  
    public static function format($date) {  
        return date("Y-m-d", strtotime($date));  
    }  
}

JavaScript

class StringHelper {  
    static toUpperCase(str) {  
        return str.toUpperCase();  
    }  
}

Repository

Java

public class UserRepository {  
    public User findUserById(int id) {  
        // ユーザー検索処理を実装するである  
        return new User();  
    }  
}  

C#

public class ProductRepository {  
    public Product GetProduct(int id) {  
        // 製品情報取得処理を実装するである  
        return new Product();  
    }  
}

Exception

Python

class CustomException(Exception):  
    pass

Java

public class DatabaseException extends Exception {  
    public DatabaseException(String message) {  
        super(message);  
    }  
}

Model

Java

public class UserModel {  
    private String userName;  
    // ゲッターおよびセッターを実装するである  
}  

C#

public class ProductModel {  
    public int Id { get; set; }  
    public string Name { get; set; }  
}

View

JavaScript (React コンポーネントとして)

class UserView extends React.Component {  
    render() {  
        return (<div>User Information</div>);  
    }  
}  

PHP (MVC の View クラスとして)

class ProductView {  
    public function render() {  
        // 製品情報表示処理を実装するである  
    }  
}

Factory

Java

public class UserFactory {  
    public User createUser(String name) {  
        return new User(name);  
    }  
}  

Python

class ConnectionFactory:  
    def create_connection(self):  
        # コネクション生成処理である  
        pass;

Adapter

JavaScript

class JsonAdapter {  
    convert(jsonData) {  
        // JSONデータを目的の形式に変換するである  
        return JSON.parse(jsonData);  
    }  
} 

Java

public class XmlAdapter {  
    public Document convert(String xmlData) {  
        // XMLデータ変換処理である  
        return parseXml(xmlData);  
    }  
}

Decorator

JavaScript

class LoggingDecorator {  
    constructor(component) {  
        this.component = component;  
    }  
    execute() {  
        console.log("実行前のログ出力");  
        this.component.execute();  
        console.log("実行後のログ出力");  
    }  
}  

Java

public class CachingDecorator extends DataService {  
    private DataService service;  
    public CachingDecorator(DataService service) {  
        this.service = service;  
    }  
    public Data getData() {  
        // キャッシュ利用のロジックを実装するである  
        return service.getData();  
    }  
}

Strategy

Java

public interface SortingStrategy {  
    void sort(int[] numbers);  
}  
public class QuickSortStrategy implements SortingStrategy {  
    public void sort(int[] numbers) {  
        // クイックソートの実装である  
    }  
}

Singleton

Java

public class LoggerSingleton {  
    private static LoggerSingleton instance = new LoggerSingleton();  
    private LoggerSingleton() {}  
    public static LoggerSingleton getInstance() {  
        return instance;  
    }  
}  

C#

public sealed class ConfigSingleton {  
    private static readonly ConfigSingleton instance = new ConfigSingleton();  
    private ConfigSingleton() {}  
    public static ConfigSingleton Instance {  
        get { return instance; }  
    }  
}

Util

JavaScript

    class StringUtil {  
        static trim(str) {  
            return str.replace(/^\s+|\s+$/g, "");  
        }  
    } 

Java

public final class DateUtil {  
    private DateUtil() {}  
    public static String formatDate(Date date) {  
        // 日付フォーマット処理である  
        return new SimpleDateFormat("yyyy-MM-dd").format(date);  
    }  
}

本記事では、変数、関数、クラスにおける従来の接頭辞・接尾辞に加え、さらに多様な種類の接頭辞および接尾辞を紹介しました..
識別子において接頭辞や接尾辞を効果的に用いることは、各構成要素の役割やデータの性質を明確に伝えるために有用であり、コードの一貫性と保守性を大いに高めるであろう.
プロジェクトやチームごとのルールに合わせ、ここで紹介した豊富な使用例を参考に、一層洗練された命名規則の整備を実践していただきたい.

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?