トップページ⇒tech
115コメント27KB

自分しかやらないであろうプログラムの癖

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/02/03(火) 03:03:21
//  ←コメントはスペース2つ空ける

理由:しらんが自然とそうなった
0002デフォルトの名無しさん2009/02/03(火) 03:28:24
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0003デフォルトの名無しさん2009/02/03(火) 10:06:53
function js_foo(){//←社内でおれだけここに「{」書いてた
}
0004デフォルトの名無しさん2009/02/03(火) 11:57:28
マ板でやれ
0005デフォルトの名無しさん2009/02/03(火) 12:30:41
class内enumを

class foo {
 struct bar {
  enum {
   id1,
   id2
   〜
  }
 }

と、structで囲って書く。
0006デフォルトの名無しさん2009/02/03(火) 18:17:54
コードを修正するとき緊張して
Ctrl+Zで何度も元に戻してやりなおしてしまう。
もう戻れなくてもCtrl+Zを念のため連打する。
これってビョーキだと思うが
0007デフォルトの名無しさん2009/02/03(火) 21:54:20
コンテキストが近い変数は長さを揃える。
=の位置とかがピシッとなって俺的読みやすさが向上する。
0008デフォルトの名無しさん2009/02/03(火) 22:17:41
>>7
それは俺もやる。よってお前は負け。
0009デフォルトの名無しさん2009/02/03(火) 23:29:58
>>8
ちょうどいい変数名がなくて揃わないと書く気がかなり削減されるんだよな。
関連する変数が同じ長さのセットになるよう類義語辞典漁ったり、

 $ perl -lne 'print if length == 4;' /usr/share/dict/words

とかやって同じ長さの単語をとにかくダンプして探したり。
0010デフォルトの名無しさん2009/02/04(水) 03:47:28
>>8
ワラタ
0011デフォルトの名無しさん2009/02/06(金) 01:30:32
つまんないからこのスレ終わり。
0012デフォルトの名無しさん2009/02/06(金) 13:22:19
昔こんなん書いてた時期がある。

/**/ if (〜) {
  ・・・
}
else if (〜) {
  ・・・
}
else {
  ・・・
}
0013デフォルトの名無しさん2009/02/06(金) 14:21:58
C++でclassキーワードを使わずに全部struct
0014デフォルトの名無しさん2009/02/06(金) 16:20:01
>>13
変態だろ
0015デフォルトの名無しさん2009/02/06(金) 20:42:35
>>13
俺漏れもw
全Publicで十分だよな
メンバが多すぎる構造体とか設計が間違ってんだよはーげ!はーげ!



俺しかやら無そうなこと、
for(int i = 0; i < 4 ; i++)
for(int k = 0; k < 4 ; k++)
iの次にkを使う。  j使う奴は総じて馬鹿
0016デフォルトの名無しさん2009/02/06(金) 20:45:26
>>15
iの次はtだろ
0017デフォルトの名無しさん2009/02/06(金) 20:52:33
>>16
なぜに?
0018132009/02/06(金) 20:52:40
>>15
俺はprivate自体は普通に使うよ
デフォではpublicであって欲しいからstructキーワードを使うってだけ
0019デフォルトの名無しさん2009/02/06(金) 21:36:48
そうか、
0020デフォルトの名無しさん2009/02/07(土) 08:02:07
void hogehoge() {
; printf("hello world")
; }

IDE というものがなかったころ、行末の ; を良く忘れたので
行頭に書くようにしてた。
0021デフォルトの名無しさん2009/02/07(土) 12:07:02
Haskellだとわりと普通のスタイルだな

main = do
  { args <- getArgs
  ; c <- readFile (head args)
  ; putStr c
  }
0022デフォルトの名無しさん2009/02/10(火) 02:55:55
コメントと区別つかねーだろハゲ
0023デフォルトの名無しさん2009/02/10(火) 03:18:43
HSPかっつーの
0024デフォルトの名無しさん2009/02/10(火) 04:46:44
>>22=23?
0025232009/02/10(火) 05:06:28
>>23は>>22に対して
0026デフォルトの名無しさん2009/02/10(火) 10:07:13
{}あまり使わねぇな
0027デフォルトの名無しさん2009/02/10(火) 10:09:33
30分もコード書いたら飽きてすぐ2ch見てしまう
俺の悪い癖だ
0028デフォルトの名無しさん2009/02/10(火) 12:44:13
それはプログラム以前の問題
0029デフォルトの名無しさん2009/02/11(水) 14:32:14
癖っていうか良いか悪いかよくわからずにやっちゃってるんだけど、
C#で、

Array.ForEach( new int[]
{
  0,1,2,
},
delegate( int iValue )
{
  ‥(なんか処理)
});

変数名があると読んじゃうんで、なるべく匿名にしたがる。
で、入れ子のタブが崩壊を起こす。
0030デフォルトの名無しさん2009/02/11(水) 18:17:04
ほうかい
0031デフォルトの名無しさん2009/09/29(火) 23:11:28
やたらとCtrl+Sでセーブしてる。無意識にやってる。
winが不安定だった頃に身についてしまった習慣。
0032デフォルトの名無しさん2009/09/29(火) 23:15:39
>>31
オートバックアップ機能は使わないの?
0033デフォルトの名無しさん2010/01/23(土) 21:21:20
>>32
>>31じゃないけどオートバックアップって自分がセーブしたくない時でもしちゃうから
個人的にはあんまり好きでないなあ・・・。
0034デフォルトの名無しさん2010/01/24(日) 09:28:32
そこで CVS/SVN ですよ
0035デフォルトの名無しさん2010/01/26(火) 15:01:35
今時svnはまだしもCVS? 脳みそ腐らせてちゃダメですよ。
そもそも、小まめにセーブすることとどう関連するのか自分でも理解できていないでしょ。
0036デフォルトの名無しさん2010/01/31(日) 08:58:12
boolean isZero = (0 == i);

Java 使ってても判断式では左辺に定数を書いちゃうことかな。
0037デフォルトの名無しさん2010/02/20(土) 19:01:05
浮上
0038デフォルトの名無しさん2010/02/20(土) 19:14:46
Ctrl+Sしようとして's'を書き込んじゃう
0039デフォルトの名無しさん2010/02/20(土) 19:22:36
そりゃうっかりさんだ
0040デフォルトの名無しさん2010/02/21(日) 23:23:03
#define UNKO
と、どうでもいいラベル名にうんこと付けてしまう
0041デフォルトの名無しさん2010/02/22(月) 00:20:00
#define ONE 0
よりはマシ
0042デフォルトの名無しさん2010/02/23(火) 01:28:03
#inlcude <stdio.h>
int main()
{
return 0;
}

ここまで書いて飽きる
0043デフォルトの名無しさん2010/02/24(水) 03:34:52
不等号は<と<=しか使わない。
0044デフォルトの名無しさん2010/02/24(水) 09:42:20
iとj以外一文字の変数は使わない
0045デフォルトの名無しさん2010/02/24(水) 19:02:01
#inlcude <stdi

ここまで書いて力尽きる
0046デフォルトの名無しさん2010/02/24(水) 19:54:11
Visual Studio で、プロジェクト新規作成しようと
名前を考えてるうちに飽きる。
0047デフォルトの名無しさん2010/02/25(木) 00:49:59
Visual Studioを立ち上げようとマウスに手をやったところで飽きる
0048デフォルトの名無しさん2010/02/26(金) 23:21:37
#include <stdio.brando.h>とまず書いて気分を高める
0049デフォルトの名無しさん2010/02/28(日) 01:39:36
とにかく詰める。ひらすら詰める

for(i=0;i<N;i++){
  if(i==2)
    …;
}

ネットから拾ってきた他人のコードも詰める
0050デフォルトの名無しさん2010/02/28(日) 04:09:58
詰めるならインデントをスペース1個にしろ。
いやインデントなし改行もなしにしろ。
0051デフォルトの名無しさん2010/02/28(日) 08:34:09
検索前に//oppaiとスタックに積む
0052デフォルトの名無しさん2010/03/07(日) 21:19:00
switchはまずdefault書いてからcaseを書く
0053デフォルトの名無しさん2010/03/16(火) 05:48:45
とにかく小さくする。優先順は実効速度、コードサイズ、行数、語数あたりで。
これで極限だと思っても、数日後もっと最適化できたりするとまたやる。

変数名はふつうにつけるよ。1文字とかはしない。マイコンがチビだった頃の
習性だから、今だったらマイコンじゃなくPICの分野のが向いてるかも。
0054デフォルトの名無しさん2010/03/23(火) 14:16:53
(0番地付近の)ベクタ部は、ルネサスもライフボートもGCCも、小細工的な道具立てで
隠している。intprg.c とか、GCCはLINKのマクロだし、IARの1998年頃に買ったcでは
interrupt [vector_no] void の関数はファイルに1個しかかけなかったり。

俺はIARのcでこんなふうに書いてる。vector.c の冒頭:
#pragma memory=constseg(RESET)
/*  SPに内蔵RAMの末尾FFC000を代入する機械語。*/
   int reset[] = {0x7A07,0x00FF,0xC000}; /* MOV.L #0FFC000h,SP */
#pragma function=interrupt // リンク時本体と関数タイプチェック照合のためこの宣言必要
void nullint(void);
void Itmr10ms(void);     /* TPU1 vect48 */
void rxerr0(void),rxrdy0(void),txrdy0(void),txend0(void); /* 88-91 */
#pragma memory=constseg(VECTOR)
void (*const vector[])(void) = { /* 割り込みベクタ部 */
// 無い割り込み(reserve)の箇所を(-1)にするのは、FFの書き込みが速いから。
    (void*)&reset,        /* 0 : reset vector  */
    (void*)(-1),        /* 1 : reserve    */
    (void*)(-1),        /* 2 : reserve    */
    (void*)(-1),        /* 3 : reserve    */
    (void*)(-1),        /* 4 : reserve    */
    nullint,          /* 5 : TRACE     */
    nullint,          /* 6 : Direct_Transition */
    nullint,          /* 7 : NMI    */
0055デフォルトの名無しさん2010/03/23(火) 14:21:59
  ・・・
    rxerr0 ,          /* 88 : SCI0 RXERR   */
    rxrdy0 ,          /* 89 : SCI0 RXRDY   */
    txrdy0 ,          /* 90 : SCI0 TXRDY   */
    txend0 ,          /* 91 : SCI0 TXEND   */
  ・・・ こういう128個の関数テーブルを書き、LINKでセグメント名VECTORを
0番地に、セグメント名RESETを400番地(Hewの推奨)に、その後ろにmain( )を
配置する。ASMで jmp main を書かなくてよいし、$VECTnnなどの名前が
128個ずらりと並んだりしてうるさいのもない。すっきり記述できてLINKmapもキレイ。
0056デフォルトの名無しさん2010/06/19(土) 08:05:17
For i to 15
   ↑
   「i」ばっか使う。何かの例文で「i」だったから。

Next
0057デフォルトの名無しさん2010/06/20(日) 07:01:52
二重ループはどうするの?
0058デフォルトの名無しさん2010/06/21(月) 22:49:03
i って宣言したっけ? と調べるのがめんどくさくなった時に
{
 int i;
 :
}
と無意味にブロック化してしまう。
0059デフォルトの名無しさん2010/07/02(金) 22:23:33
コメントを書かない
0060デフォルトの名無しさん2010/07/05(月) 06:01:08
それは、自分しかじゃなくてあまりにも大勢がやるぞ
0061デフォルトの名無しさん2010/08/10(火) 01:50:43
関数や変数の長さを揃える。

escape/unescapeとか許せない。encode/decodeは素晴らしい。
hoge_open/hoge_closeとか死んでいい。start/stopも泣ける。
0062デフォルトの名無しさん2010/08/10(火) 01:57:33
君は知恵が足りない
escape__/unescape
hoge_open_/hoge_close
start/stop_

0063デフォルトの名無しさん2010/08/10(火) 10:26:26
コンパイルを何度もする
0064デフォルトの名無しさん2010/08/10(火) 18:02:30
ちょっとずつ変えて何度もコンパイルするのなら、向上心の現れと思うが。
太古のメインフレームじゃあるまいし、PCで何度コンパイルしたって
屁みたいな資源消費だ。
0065デフォルトの名無しさん2010/08/21(土) 10:10:52
イースターエッグを必ず入れる
0066デフォルトの名無しさん2010/08/26(木) 12:50:37
動かなくなる以外のバグは仕様ですと言い張る
0067デフォルトの名無しさん2010/08/28(土) 00:54:14
変数名や関数名考えることに時間浪費。
0068デフォルトの名無しさん2010/08/28(土) 01:07:19
>>67
ノ
0069デフォルトの名無しさん2010/08/28(土) 06:39:06
iとかjは見にくいと思ってcとかdを使うのは俺くらいだろうな
0070デフォルトの名無しさん2010/08/28(土) 07:10:50
そこで、icですよ。イタレータのときはit。
0071デフォルトの名無しさん2010/08/28(土) 08:45:43
jc萌えハァハァ
0072デフォルトの名無しさん2010/08/28(土) 21:33:31
MessageBox::Show( "あべし",
0073デフォルトの名無しさん2010/08/29(日) 16:35:39
for(i=100;i;i--)
0074デフォルトの名無しさん2010/08/30(月) 02:34:55
回数だけが問題なループではそう書くこともあるな。
配列操作などだと 「前から順番に」 するのが一般的なので0からになる。
例は先頭に挿入するために場所を空けるような場合なんかかな。
0075デフォルトの名無しさん2010/08/30(月) 07:16:40
ネストレベル=ループ変数の長さ
for(i=0; i<10; i++){
for(ii=0; ii<5; ii++){

}}
0076デフォルトの名無しさん2010/08/30(月) 12:18:07
単項演算子でも間にスペースいれちゃう
int * p = & x;
int y = * p;
int z = - y;
俺みたいに徹底してるやつは珍しいだろう
0077デフォルトの名無しさん2010/08/30(月) 14:02:55
>>75 もう1レベル内側の変数がiiだった、という例がワインバーグの本に載ってたな
0078デフォルトの名無しさん2010/08/30(月) 15:30:21
3段目はiijだろ常考
0079デフォルトの名無しさん2010/08/30(月) 18:41:59
ソースの終端に// eofって入れとくのはわりと普通か
0080デフォルトの名無しさん2010/08/30(月) 21:43:42
長いブロックの終わりとかに end of 〜 とか end 〜 ならよくやる
0081デフォルトの名無しさん2010/08/30(月) 22:04:33
コードがやってることをコメントで横から説明してるうちは二流。
これからコードがやることをコメントで先に書いておくのがプロ。
そうすれば読む人間はコメントだけ読んでコードを飛ばすことができる。
0082デフォルトの名無しさん2010/08/30(月) 22:11:42
C++ でソースの一部をとりあえずコメントアウトしておく場合、
その部分を /* と //*/ で囲む癖がある
もう指が勝手にキーボードを叩く

コメントを外すして確認する時はコメント頭の /* を //* にする
スラッシュ 1 個付けたり消すだけでコメントアウトを切り替えられる
0083デフォルトの名無しさん2010/08/30(月) 22:14:32
>>82
#include <stdio.h>

int main(void) {
/*
printf("これは出力されないはず\n"); /*出力されないコード*/
//*/
printf("これは出力されるはず\n"); /*出力されるコード*/
return 0;
}
先生コンパイルエラーが出ます。
0084デフォルトの名無しさん2010/08/30(月) 22:15:56
似た感じだけど,/** A /*/ B /**/
AかBの片方だけを有効にしたいときにする
0085デフォルトの名無しさん2010/08/30(月) 22:17:16
そういうのはTMPでやってくださいよ
0086デフォルトの名無しさん2010/08/30(月) 22:19:11
そういう変てこなテクニックって他人が見たら理解するのに手間がかかるだけなんだが
0087デフォルトの名無しさん2010/08/30(月) 22:22:50
>>86
そもそも「自分しかやらない癖」の大半は
他人が見たら理解するのに手間がかかるものだと思うが、
そういう趣旨のスレではないのか
0088デフォルトの名無しさん2010/08/30(月) 22:24:40
コメントアウトで切り替えよりテンプレートのほうがよっぽど見やすいし間違いも少ないです
0089デフォルトの名無しさん2010/08/30(月) 22:35:56
#define /* //
#define */ //
で良くね?
0090デフォルトの名無しさん2010/08/30(月) 23:09:19
>>88
本格的にアプリを作るのならテンプレートでやるよ

ただ、簡単な実験をして動作を確認している時とかに
いちいちテンプレートを書くなんて効率悪すぎ
0091デフォルトの名無しさん2010/08/31(火) 00:41:56
私ゃ素直に#if 0/#endifで囲む。有効にするときは#if 1にしてもいいし、#elseを挟んでもいい。
0092デフォルトの名無しさん2010/08/31(火) 02:02:02
c/c++みたいなプリプロセスがあるなら#ifでもいいけど
javaとかだとそれが無いから>>84になる
0093デフォルトの名無しさん2010/08/31(火) 05:39:41
/**/は滅多なことがない限り使わない
0094デフォルトの名無しさん2010/09/09(木) 13:46:48
viで保存する前にkjトグって無駄にキャレット移動する
0095デフォルトの名無しさん2011/05/05(木) 11:09:45.52
0096デフォルトの名無しさん2011/05/11(水) 13:36:40.19
エディタの設定で
セミコロンは太字で、赤などの目立つ色にする

…じゃないとしょっちゅう付け忘れるので
0097デフォルトの名無しさん2011/05/11(水) 13:55:27.37
そういう癖はいいんじゃないかな。
0098デフォルトの名無しさん2011/05/13(金) 10:26:44.53
"〜" や '〜' 、要は文字列リテラルを修正or追加するときには
行末に行コメントとして引用符を書いてから行ない、後にそのコメントを消す

…書いてる最中に、それ以降のコードが全部文字列カラーに塗られるのがなんか嫌なんだw
0099デフォルトの名無しさん2011/05/14(土) 05:03:11.72
"" って打ってからその間に書くよ。
0100デフォルトの名無しさん2011/05/14(土) 05:24:22.03
8085のパワーONイニシャル・ベクタ部もcで書く。
static void reset(void) {              /* パワーON reset処理本体 */
    void c_main(void);
    di();
    _asm_c("\n\tlxi\tSP,0A000H\n");   /* SP←RAM末尾の偶数番地*/
    c_main();                   /* cのmainをcall */
}

static void rst1(void) { ei(); }           /* 0008 RST1 */
    static const char pad1[]=" ";
static void rst2(void) { ei(); }           /* 0010 RST2 */
    static const char pad2[]=" ";
・・・
0101デフォルトの名無しさん2011/05/14(土) 05:33:37.95
8253、8259とコンボで使うから、RST領域の後ろをIRベクタにするのが一般的
    void c_timer(void);
static void rst75(void) { c_timer(); }  /* 003C 10mSタイマ割込み処理*/
    static const char pad75=0;
static void IR00(void) { ei(); }      /* 0040: 8259設定はcall4番地おき、ベクタ0040*/
    static const char pad00[]=" ";
static void IR01(void) { ei(); }      /* 0044: */
    static const char pad01[]=" ";
static void IR02(void) { ei(); }      /* 0048: */
    static const char pad02[]=" ";
0102デフォルトの名無しさん2011/05/14(土) 05:37:50.87
static void IR03(void) { ei(); }      /* 004C: */
    static const char pad03[]=" ";
    void c_iasc1(void),c_iasc2(void),c_iasc3(void),c_iasc4(void);
static void IR04(void) { c_iasc1(); }  /* 0050: 8251 A-CH  */
    static const char pad04=0;
static void IR05(void) { c_iasc2(); }  /* 0054: 8251 B-CH  */
    static const char pad05=0;
static void IR06(void) { c_iasc3(); }  /* 0058: 8251 C-CH  */
    static const char pad06=0;
static void IR07(void) { c_iasc4(); }  /* 005C: 8251 D-CH  */
    static const char pad07=0;
旨い具合に、{ 関数(); } は JMP 関数 が出るんだ。
0103デフォルトの名無しさん2011/05/15(日) 12:16:44.49
>>99
編集してるのが最終行とか、それに近い位置なら俺もそうするんだけど
頭のほうを編集するときとかは、1個目の"と2個目の"を打つ間の一瞬が嫌なのです
0104デフォルトの名無しさん2011/05/16(月) 10:34:23.24
//"..."と書いてから//を消したらどうだ?
//""←←BsBs→でもいいか。
0105デフォルトの名無しさん2011/05/16(月) 21:49:52.21
それだと行の最後限定になるから…
0106デフォルトの名無しさん2011/05/18(水) 08:32:29.46
別にならんだろ。文字列の中って判断させなければいいだけなら。
括弧の対応が合わなくなって色が変わるのも抑制したいのなら、勝手にしてくれ。
0107デフォルトの名無しさん2011/05/18(水) 08:43:08.18
いやまあ、勝手にするよw
0108デフォルトの名無しさん2011/06/03(金) 19:30:28.67
C#の癖でC++のローカル変数宣言時newと書く
0109デフォルトの名無しさん2011/06/23(木) 05:55:02.76
>>100-102 のコードは無事動作しました。納品版のベクタに使って一発動作(w
0110天使 ◆uL5esZLBSE 2011/07/03(日) 17:32:12.02
ゴミが何いってもゴミ
0111デフォルトの名無しさん2011/07/05(火) 00:12:08.94
ボクの理解できない話をしていて悔しい、ということですね
0112デフォルトの名無しさん2011/08/16(火) 06:32:36.47
32bitレジスタが使えるH8Sなら楽だったんだけど、8085でこれにたどりつくまで苦労した
「KHz単位の周波数f+70455」を64で割った商qと余りmを11bitと8bitの以下のような
配置=1qqqqqqqqqq0mmmmmm0の19bitの列にしてMSBファーストで出力する。
   call   calfreq    ; HL=周波数(25000位まで)
   lxi   B,70455    ; 70455=11337hの16bit分
   dad   B      ; (f+70455)のLSW   
   MOV   A,L      ; LSB 6bitが余り   
   ANI   63      ; A=余り (ここでCYが消える)
   RLC         ; 7bitを左寄せに(Cbit=0)
   MOV   B,A      ; siftoutの引数(B=8bit)
   STC         ; CY=1で+70455が完成(17bit)
   MOV   A,H      ; CYHLは↓こんな数値:   
   RAR         ; 1 qqqq qqqq qqmm mmmm
   MOV   H,A      ; これを右シフトして、   
   MOV   A,L      ; 1qqq qqqq qqqm mmmm に
   RAR         ; =11bitの商を左詰めで得る
   MOV   L,A      ; (右5bitは無視される)
   call    siftout   ; HL=左11bit、B=8bit
0113デフォルトの名無しさん2012/01/07(土) 10:55:00.06
バージョン情報のダイアログ(ウィンドウ)をとじるには、OKをおしますね
あれなんでOKなんでしょうね?
おれCloseにしてみた
0114デフォルトの名無しさん2012/01/07(土) 14:33:05.71
ソースを修正しているうちに、間違えたような気がしてCtrl+Z押し続けて
戻れるところまで戻ってからCtrl+Yで一つずつ検証するというのを何度も繰り返す
0115デフォルトの名無しさん2012/01/07(土) 17:07:32.65
svn diff
■ このスレッドは過去ログ倉庫に格納されています