コードを書く時のご自身のルールを教えてください
Jiro Doke
on 14 Jun 2025 at 14:58
Latest activity Reply by 交感神経優位なあかべぇ
on 18 Jun 2025 at 14:40
これからは生成AIでコードを1から書くという事が減ってくるのかと思いますが,皆さんがMATLABのコードを書く時に意識しているご自身のルールのようなものがあれば教えてください.
MATLAB言語は柔軟に書けますが,自然と個人個人のルールというものが出来上がってきているのでは,と思います.
私はParameter, Valueペアの引数がある関数はそれぞれのペアを新しい行に書く,というのをよくやります.
h = plot(x, y, "ro-", ...
"LineWidth", 2, ...
"MarkerSize", 10, ...
"MarkerFaceColor", "g");
Parameter=Valueでも同じです.
h = plot(x, y, "ro-", ...
LineWidth = 2, ...
MarkerSize = 10, ...
MarkerFaceColor = "g");
また,一時期は "=" を揃えることもやってました(今はやってませんが).
h = plot(x, y, "ro-", ...
LineWidth = 2, ...
MarkerSize = 10, ...
MarkerFaceColor = "g");
皆さんにはどのようなルールがありますか?
12 Comments
Time DescendingMathworksの意向に反してる気がしますが、MATLABの列優先を意識したデータ構造にしてます。下記例だと、列にデータを追加していくほうが100倍以上高速になります。
% データを1行ずつ追加していく
tic;
data = zeros(0,1000);
for i = 1 : 10000
data(end + 1, :) = rand(1,1000);
end
toc;
% データを1列ずつ追加していく
tic;
data = zeros(1000,0);
for i = 1 : 10000
data(1000,end + 1) = rand(1000,1);
end
toc;
経過時間は 16.255466 秒です。
経過時間は 0.100127 秒です。
点群データも3×n, 画像データも3×m×nにしています。内積計算やら、他言語との連携、データ処理など何かと有利になることが多いです。ただ、MATLABの標準関数はn×3, m×n×3なので、そこは不便です。
プログラミング経験もなくはじめてMATALBを触る…といったメンバーに教える機会も多いので、極力 MathWorks さんのドキュメンテーションに寄せて書くようにしています。Name, Value ペアは私も同じくですね。
MATLABエディターのハイライト機能や置き換え、自動補完などが便利なこともあり、長くなっても変数や関数名は具体的に書くようになってしまいました。
- 変数名や関数名: ロワーキャメルケース (fileNames, getFileNames など)
- クラス名やプロパティ名: アッパーキャメルケース (MyClass, FileNames など)
- コールバック関数: スネークケース (callback_function など)
文字列処理も昔は何でもかんでも [ ] や strrep を使うことが多かったですが、最近は append (結合) や erase (削除) 、 replace (置換) など、一目でなにをしているか分かりやすくなることから意識して使うようになりました。
逆に、ユーザー側が意識しなくてよいローカル関数や呼び出し関数記述については、極端に記号化された変数や arguments による引数チェックなども遠慮なく使い、自分自身の可読性に極端に振りますね。
私だけのルールというと。。。for loopを回す時iteratorに意味があればできる限りに「i_(意味)」の形でiteratorを作るということです。 たとえば、複数のpngファイルに対してfor loopを回しますと
D = dir("*.png");
filenames = {D.name};
foldernames = {D.folder};
n_file = length(filenames)
for i_file = 1:n_file % <----- こちらのi_file
% disp(filenames{i_file})
end
の形にするのが普通です。
マイルール・・意外と思いつかない。無なくて七癖ということで、いろいろあるとは思うんですけど。
できるだけ string 型で統一する・・(完璧にはできていない)でしょうか。
h = plot(x, y, 'ro-', ...
'LineWidth', 2, ...
'MarkerSize', 10, ...
'MarkerFaceColor', 'g');
じゃなくて
h = plot(x, y, "ro-", ...
"LineWidth", 2, ...
"MarkerSize", 10, ...
"MarkerFaceColor", "g");
ルールというほどのものではないかと思いますが…
私の場合、計測後の解析処理を検討することが多いので、次のようになりがちかなと感じています。
clear;close all;clc
filename = '~'
Sign in to participate