「ネスト」を含む日記 RSS

はてなキーワード: ネストとは

2012-01-19

Python vs Ruby vs PHP vs HaskellRubyistネクラオタクキモメン」 part2

Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1

http://anond.hatelabo.jp/20120118220204

441 : デフォルト名無しさん : 2011/12/14(水) 00:34:54.13

Rubyistってなんであんな小学校の図書室で毎日読書してそうな

いじめられっこネクラチビメガネみたいな色黒とかキモオタ

顔面オジサン、オバサンばっかなの?


445 : デフォルト名無しさん : 2011/12/14(水) 00:47:59.11

Javaer: 傲慢プライド高い、土方

Scalaer: 鼻持ちならない、モヒカン

Lisper: マジキチ

Rubyist: ネクラオタクキモメンいじめられっこネクラチビメガネ、色黒、キモオタ、顔面オジサン、オバサン

PHPer: 土方、DQN

Pythonista: イケメンリア充

473 : デフォルト名無しさん : 2011/12/16(金) 22:06:14.45

Python厨のRubyネガキャンは異常だなwww

608 : デフォルト名無しさん : 2011/12/28(水) 09:29:20.74

Rubyブロックが便利すぎて、Pythonをやめたくなった。

いちいちtemporaryな関数作成してから目的関数に渡していたのがばからしくなった。


609 : デフォルト名無しさん : 2011/12/28(水) 09:43:17.83

リストやジェネレータ式の内包表記が便利過ぎて

PythonからRubyには移行できないな

610 : デフォルト名無しさん : 2011/12/28(水) 11:03:14.91

日本人が開発の中枢にいるような言語はやめとけ。

どうせ廃れる。

611 : デフォルト名無しさん : 2011/12/28(水) 11:58:14.38

Pythonさんは、どうしてこう排他的かなぁ

626 : デフォルト名無しさん : 2011/12/28(水) 15:08:51.86

609

リストやジェネレータ式の内包表記が便利過ぎて

おれもそう信じてたけど、Rubyの、メソッド呼び出しを続けて書けるほうが便利だわ。

まるでjQueryみたい。といってもjQueryのほうが後発だけど。

たとえば「xsから0以上のものを選んで、その二乗の和を求める」場合

sum([ x*x for x in xs if x > 0 ])

これだと、後ろから読まないといけないんだよね。でも

xs.select{|x| x > 0}.map{|x| x*x }.sum

これなら頭からひとつずつ読めばいいから、わかりやすいし、考えたとおりに書きやすい。

まさにスクリプトって感じがする。

629 : デフォルト名無しさん : 2011/12/28(水) 15:55:19.77

Rubyメソッドチェーンって内包表記より弱いと思う

ネストするmapとかflattenとかわかりくいよ

Python: [[x,y] for x in xs for y in xs]

Ruby: xs.map{|x| xs.map{|y| [x,y] } }.flatten(1)


632 : デフォルト名無しさん : 2011/12/28(水) 17:25:29.75

いっぽうメソッドチェーンは

orz.sage().hage().hoge().hige() タイプの問題には向いている

まり向いている方向がちがう

(まあHaskellなら hige . hoge . hage . sage と書くだけだというのは置いといて)

強い弱いということで言うと、問題を解くのに必要な一番能力が弱い

(限定された)道具を使うという考え方があるようだよ

ベタ再帰は強い(汎用的)、がそれゆえ読むのに注意を必要とする

foldrは再帰よりは弱いが、foldrで表現可能な問題のクラス(原始再帰)はかなり

広いので、mapやfilterで済むならもちろんそのほうが望ましい

ではこの問題は弱いmapやfilterを結合させるほうがいいかというと、

俺はlist comprehensionのほうが集合表記そのもの=whatを表現していて好きだな

Pythonのlist comprehensionのsyntaxはあまり好きではないが

それは大きな問題じゃない

640 : デフォルト名無しさん : 2011/12/28(水) 19:56:09.23

メソッドチェーンってバグをわかりにくくするだけだと思うなあ。もちろん性能面もあるし。linqとかは良いと思うけど。

642 : デフォルト名無しさん : 2011/12/28(水) 20:28:45.92

同じメソッドチェーンでも、linqなら良いけどrubyなら悪い .....

一言で言うと「俺はRubyが大嫌いなんだぁーー」ということですな

663 : デフォルト名無しさん : 2011/12/28(水) 22:45:30.53

メソッドチェインなんてライブラリ設計次第でどうにでもなる

PythonどころかJavaでもできる

内包表記は構文でサポートしないと難しい(マクロがあれば別だが)


680 : デフォルト名無しさん : 2011/12/29(木) 00:07:41.77

メソッドチェーンが関数型の方法に比べて特に優れている点があるようには思えないが

パイプ順に書きたければ書けるし


682 : デフォルト名無しさん : 2011/12/29(木) 00:30:35.72

680,663

Pythonには関数型として致命的な弱点があるからメソッドチェーンでは簡潔なコードが書けない

たとえば「(1) Rubyは 条件判定が(文ではなく)式」だから以下のようなコードが書ける

 ys = xs.select { |x|

   if test

     if test_1 then test_1_1 else test_1_2 end

   else

     if test_2 then test_2_1 else test_2_2 end

   end

 }

あるいは「(2) Rubyブロック内で局所宣言が可能」だから上のコードを以下のように書き換えてもいい

 ys = xs.select { |x|

   cond_1 = if test_1 then test_1_1 else test_1_2 end

   cond_2 = if test_2 then test_2_1 else test_2_2 end

   if test then cond_1 else cond_2 end

 }

関数型言語であれば「(1) 条件判定(if/case)が式」で「(2) 局所宣言(let .. in .. end)が可能」なの当たり前

ところが残念な事に、どちらもPythonには欠落しているから、上の例はストレートコード化できない

からPythonではメソッドチェーンは使われないし、「酸っぱい葡萄」に見える

684 : デフォルト名無しさん : 2011/12/29(木) 00:37:06.68

Rubyでもリスト内包表記が言語として組み込まれてくれると嬉しい

リスト内包表記はトップダウン思考

メソッドチェーンはボトムアップ思考

だと思う

頭に浮かんだロジックをすばやくコード化するのはメソッドチェーンが適しているし、

じっくり腰を据えてコード設計するならリスト内包表記のほうが美しい

自分は、たぶんこのスレRubyコアの中の人も見ているだろうから

そのうちRubyにもリスト内包表記が実装されるんじゃないかと期待しているw

766 : デフォルト名無しさん : 2011/12/30(金) 10:04:41.40

メソッドチェーンは書き易い

内包表記は見た目が整ってて綺麗、最終的な型がわかり易い

いじょ。

2011-11-10

そいつトンデモ学者だってことと、お前等がブコメで見せ付けてるお前ら自身の人格の卑しさは無関係

tari-G 頭が痛い 彼や武田はどうみても私を含めここでブクマしている人より現実には遙かに多くの人を被曝から救っている。それを無視する訳にはいかない。 2011/11/10

凄くいいこと言ってるじゃん。

そのtari-gってこれまで見かける限りではろくなこと言わないと思ってたけど

そういう、全く別角度の発想というか、謙虚自分を考え直してみるってことが出来る面もあるんだね。

意外な美点を見せられた感じがする。




そのブコメ欄にもギッシリ居るけど

毎度紅潮しきった顔でハフハフ鼻息ふきながら

「僕が一番この馬鹿を上手く侮辱できるんだ」大会してる奴等もさあ

tari-gの恥垢もらって煎じて飲んだら今より少しは上等な人間になれるのにね。




このはてな名物の卑しい卑しいクズどもは

「攻撃してもいい人間」を攻撃する嗜虐心で年がら年中脳勃起してるインターネットゴミ啜りなわけだけど

たまに自分達自身の興奮や快楽について問い詰められると




「いや、あくまで社会の為に(ゴニョゴニョ)」

「ちがう、我々は警鐘カウンターを発する意味で(モゴモゴ)」

デマを言う人間の自業自と(モニュモニュ)」




なんて、

まるで「社会正義のための公共事業やってました」みたいな言い訳をする。

そんなんじゃないのはお仲間以外のだーれが見たってバレバレなのにさあ。




要は

クラスの中でニブい奴をみんなで馬鹿にして喜ぶクソガキ小学生の愉悦、

これをいい歳になってもずーっと追い求めてるどうしようない低能のハレンチ集団だよね。

歳食って成長したのは「侮辱して楽しんでも大丈夫そうな奴」を探す、コレクトネストいう名の空気読みの小知恵だけ。





ニセ科学を潰すのは意義のあること(キリッ)」とかもさー

社会的意義の為にやってる正義の集団だって言うなら

当該ニセ科学への要点批判だけを冷静に・毅然と・強烈にやればいいんだよね?




でも毎回必ずってほど

ハフハフハフハフ!って感じの、嗜虐心で血行が良くなった鼻息荒いクズの特盛りになってるよね?

はてなダイアリーはてなブックマークもさあ。





また古来ネットに繰り返し現れるこの手の集団は

こんな風に自分ら自身が叱られたりすれば

血相変えて叱った人間への人格攻撃して目を背けるってのも相場が決まってる。

はてなならお仲間id同士で励ましあって☆つけあいか




レベルの同類のちんちんしゃぶって慰めあうぐらいなら

tari-gのをしゃぶっとけばまだ薬効があるよ。



http://anond.hatelabo.jp/20111110184654

2011-07-15

http://anond.hatelabo.jp/20110714005634

レスが遅れてすいません。

ううむ。理系文系の対立みたいな残念な方向に流れてきてしまいました。仕掛けたのは私のほうかもしれませんが。

京都弁なのは一向にかまいませんが、大元の記事よりもレトリックが雑になってきているようです

最初はそれなりにいい線いっていたのに、ここにきてもう投げやりというか、反論のための反論というか、急速に劣化ウランしてます

オウム真理教信者人間燃料棒はモノです人間相手なら断罪するのは慎重さが必要だと思いますが、燃料棒相手にそこまで遠慮する必要はないでしょう。あそこで遠慮したことで、「メルトダウン隠蔽説」の発生という大損をしたわけです。これは表現の細部の問題で、後でいいますが、こういうのが信頼を作りだすにあたって重要なんです

(本論と直接関係ありませんがオウム事件のくだり「化学薬品が大量に見つかった時点でもうほぼ真っ黒」という発言は気になりますね。そうやって河野さん一家も冤罪で酷い目に遭いました。人間相手にはくれぐれも慎重に頼みますよ。モノ相手はバッサリやっちゃってください。)

原発派が物理限界を超えて放射能拡散する可能性を語ったせいで「だまされた」ことを批判されていましたが、今度は、逆に、物理限界を超えて炉心の水位が保持されなかったことについては、裏付けが取れるまで断定しないことを良とする。せっかく「物理限界」についてのあなたロジックをもとに議論を展開しているのにスルッとかわされてしましました。なんともやりきれません。

あいつらの中に悪い奴おるんちゃうか、だからあいつら悪い奴や」とは言っていません。「推進派が嘘をつきましたか?否。」と言いきるのは極端ということです。この点はあまり突っ込みたくなかったので、控えめに「かもしれない」で終わらせたつもりですが、もっとハッキリ言わせていただくならば、九電が今回やったことっていうのも、ウソじゃないんですか。流通していないか大丈夫って、今になってセシウム基準値オーバーの牛だって流通したことが出てきたじゃないですか。あれもウソじゃないんですか。と言いたい。それが意図的かどうかとか、実害があるないかいかは関係ないんですよ。あの船場吉兆だって、あんなの食っても到底死にませんよ。でも信頼失ったらオワコンになるんです。信頼というのはそういうもんです。推進派は、そこがまるでわかっていないんです。かわいそうなくらい。だから原発自動車比較したり、死者の数を出して、どうだ安全だろといったりするんです。ずっとこの調子なんですから。そんな議論で到底信頼は得られませんよ。

誤解のないように言っておきますが、わたしは原子力だけを特別扱いしているわけではありません。たとえば、メキシコ湾を汚染した油田だってあい事故起こすのは許されません。自動車だって免許は持っていますが、自分は下手くそなので(制御できる自信がないので)運転はしません。

広瀬隆の著作が「だまされようがありません」というのは、(あなたレベルなら)だまされようがないということです

まあ、一読をお勧めしますね。賛否はともかく、それなりに楽しめると思いますから。私にしても全部同意するほど無批判な読み方はしていません。

原子炉時限爆弾」の冒頭で出てくるのは、1960年政府原発事故の影響を試算したの極秘文書で、これが日本列島をすっぽり覆う被害予想になっているんですが、これなんか、あなたミスリードしたナイーブ系反原発派をミスリードしたのは実は政府そのものというネスト構造だったのではないかと思えてきますよ。原発の「安全神話」もその崩壊も、推進派と反対派の弁証法じゃあないでしょうか。

まあ、私が極端な「理系コンプレックス濃厚なのはご覧の通りですが、私にこんなにもコンプレックスを与えている、あなたを含む「理系エリートは凄くあってくれなくては困るわけで、それが凄くないもんだから、もうプンプンですよ。上から目線などとんでもない。どんなにパニクっても、おが屑突っ込むみたいな無意味なことを弁護するのはやめてほしい気持ちでいっぱいです。あと、文系の連中ごときに手足縛られて、安全対策ができないっていうのなら、団結して職場放棄しろといいたい。「理系」には、モノを握っているという、そういう力が有るはずです。そういうのが「理系」の良心でしょう。原子力を制御できても、文系のアホ連中は制御できないって情けない話じゃないですか。

日本原発は止まるか止まらいか

原発推進派の安全神話にだまされたと思った人。

原発反対派のオーバーウソにだまされたと思った人。

その2極の間の無数の中間。

結局、ナッシュ均衡で決まるんじゃないでしょうか。

2011-04-18

http://anond.hatelabo.jp/20110418031039

ところで引用ネストってどう書けば良いんでしょう?

http://anond.hatelabo.jp/20110417170320

私は原発賛成派でも反対派でもありません。というかこの二分法は意味がないと思ってます。まともな人なら賛成派であれ反対派であれ

原子力を置換できるよりよい方法(省エネ含め)があれば脱原子力を進める、そうでなければ現状維持のままよりよい方法(原子力の改良・改善を含む)を探す」



この立場に共感

賛成/反対の二分法はわかりやすいけど、実際的じゃないと思う。

一見常識的な考え方だが、残念ながらそれは甘すぎる。

もう我々には悠長に代案考えてる時間なんてありませんよ。明日にも第二の事故が起きるかもしれないんですよ。もしそう思えないなら、認識が甘いと思います。東電だって明日事故は起きないだろう、来月もきっと来年だって起きないだろうと思い続けていたから、今のようになっています。自覚してください。あなた感覚は事を起こした東電政府御用学者と大差ないんですよ。彼らも自分らの感覚常識的だと思いながら、原発運用を続けていたわけです。彼らは事故を起こしたくて起こした極悪人でも、社会人として著しく失格なウッカリ者でもありません。あなたのような標準的な人間なんです。そして現状は、それではいけないことを示しているんです



ところで引用ネストってどう書けば良いんでしょう?

2011-03-20

より良いPHPerにならないための20Tips

http://1-byte.jp/2011/03/20/20_tips_you_need_to_learn_to_become_a_better_php_programmer/

良いPHPerだって?そんなものは丸めゴミ箱にでも捨ててしまった方が資源の再利用になる分いくらかマシだ。

つまり俺たちがしなくちゃならないことは「より良いPHPerにならないため」に何ができるかってことなのさ。

それじゃ、始めよう。

1. ?>を使うな

?>なんて使っちゃいけない。そう俺たちはBAD PHPer。

無駄ホワイトスペースの出力に悩まされるくらいなら対称性なんて丸めゴミ箱にでも捨てた方がまだマシだ。非対称性こそが賛美。

2. 設定ファイルPHPで書くな

require_once("config.php");

未だにこんなことやってるやつがいるのかいベイベー。絶対にダメだ。この一行を見たら俺は悶絶する。

ダメだ、早く何とかしないと。

大抵このconfig.phpの中身はこうなっている。見て絶望だ。

$hoge_path = '';
if (!LOCAL) {
    define('FOO_FLAG', 1);
    if (HONBAN) {
        define('HOGE_FLAG', 1);
    }
    else if (TEST) {
        define('HOGE_FLAG', 2);
    }
}
else {
    $hoge_path = '/local';
    define('FOO_FLAG', 2);
    define('HOGE_FLAG', 3);
}

define('HOGE_URL', $hoge_path.'/hoge/');

こういうのが延々と続くわけだ。もういやだ。もう見たくない。

本番環境テスト環境でどういう値の違いがあるのか、ローカル環境だとどうなるのか、まったく把握できる気がしない。

なまじPHPな設定ファイルのせいで処理をついつい書いてしまう。そしてどんどん複雑になってしまう。

やはり設定データは基本的にYAML等のデータしか定義できない形式のもので用意すべきだ。そして環境ごとに設定ファイルを分けるべきである

そうすることで何にどういう違いがあるのかすぐにわかるし、diffすれば一度にすべて把握することができる。

# 本番環境設定ファイル
foo_flag: 1
hoge_flag: 1
hoge_url: '/hoge/'
# テスト環境設定ファイル
foo_flag: 1
hoge_flag: 2
hoge_url: '/hoge/'
# ローカル環境設定ファイル
foo_flag: 2
hoge_flag: 3
hoge_url: '/local/hoge/'

3. コメントを信用するな

そう、あなたはこんな状況に遭遇したことがあるんじゃ?

// ここで後の処理のためにhogeメソッドを呼び出しておく
$q->foo();

// $a['foo']はここに来る時点で真のはず
// 2010-03-10 判定がおかしいので修正
// 2010-06-21 やっぱり値が入ってる方が正しい
if ( !isset($hoge[0]) ) {
}

コメント保守されない。そう、それは真実。こんなコメント発見したら即効削除しよう。コメントは基本信じるな。

俺たちにちょっとしたヒントと大きな損害を与えてくれる、それがコメントの役割なのだ。

4. タブとうまく付き合うしかない

わかる。いいたいはとてもわかる。俺たちはしばしばインデントにスペースを使うはずだ。一方でIDEのしっかりした言語ではタブも使うことがある。しかし悪いことに、両者を混同しているプログラマも一定数いるのだ。

タブを画面上で認識しにくいエディタが世の中には存在する(何とは言わないが)

そして画面上で認識しにくいことを理由にタブを気にしないプログラマがいる。

この二つの条件が重なると、タブとスペースの交じり合ったインデントが完成する。もうぐちゃぐちゃだ。これは永遠に続く戦いだ。

私たちが勝利を掴むためにできることなどせいぜい、常にスペースしか使わない。タブを見つけたらその都度スペースに変換する。そういった地道な活動が明日へとつながるのだ。

5. 変数名に時間をかけるな

われわれがプログラムをするとき、何に一番時間がかかってるか。実は変数の命名なのである。ここで拘り過ぎて時間をかけ過ぎては何も進まない。

御託はイイからさっさと書け、だ。しかしとはいっても変数名は重要。日頃からどういうときにどんな名前を使うかを決めておくといい。

そして変数名に型はまったく必要ない。型宣言のないPHPにおいて、型の変数名をつけること自体ナンセンスだ。

コンパイラ様に保証されてない状態での

$iNumber = 'aaa';

になんの意味もない。コメントを信じるなでも言ったが、これはプログラマを混乱させるだけの害悪なものだ。

6. 変数初期化場所

変数を使う前に初期化するのは、警告を出さないという意味でも良い癖だ。しかし具体的にどこでやるかが問題だ。

$foo = null;
$foo = $q->foo();

こんな初期化意味はない。よくあるのはやはり、if文で値を振り分けるケースだろう

$foo = null;
if ( $hoge ) {
    $foo = 1;
}
else if ( $bar ) {
    $foo = 2;
}

このとき初期化はとても有効だ。もしnullの初期化を忘れたまま$fooを使うと警告が出るが、ちゃんと初期化してるので出ない。基本中の基本だ。

7. 不正なら常に死ね

function getStatus() {
    $bReturn = false;
    if ($i == 2) $bReturn = true;
    return $bReturn;
}

(中略)

もし、何かしらの理由で、あなたの書いたif文が間違っていたら?

この書き方をしていれば、間違った値に対して、常にfalseが返る。

私たちが、PHPでsensitiveなデータを取り扱うなら、正しいデータ入力されるまでは、動かないコードを書くべきだ。

trueとfalseの条件がいまいち明確ではないが、本当に動かないコードを書けというのであれば以下のようにすべきだ

function getStatus() {
    $bReturn = false;
    if ($i == 2) $bReturn = true;
    else if ($i == 1) $bReturn = false;
    else throw new Exception("bad status! $i");
    return $bReturn;
}

中途半端にfalseを返して生存させる必要性はまったくない。今すぐ死ね

8. 連想配列キーアクセスする場合

単なる配列に対して数値をクオートで囲う必要はない。

連想配列キーを指定する場合だけ定数と間違わないようにクオートで囲まなければならない。そして逆に定数を使いたい場合はクオートで囲ってはいけない。

更に後世のプログラマ処理を見たときに、定数が使いたかったのか、文字列が使いたかったのかを明確にした場合はconstantを使うと良い。

// 定数のFOOを使うよということが明確になる
print $a[constant('FOO')];

9. echoよりもprintfを使え

もし、文字列変数の値と一緒に出力するときPHPではコンマの代わりにprintfを使うことが使える。

なぜ?コンマを使うよりも可読性がグッとあがるから

printf( “Hello, my name is %s“, $sName);

以下の代わりに上記のコードを使う。

echoHello, my name is “, $sName;

出力すべき変数が増えれば増えるほど、有効になっていく。とにかく迷ったならば、printfを使え、だ。

10. 三項演算子は一回まで

三項演算子はとても有効だ。しか優先順位に難があるせいで三項演算子ネストしようとすると以下のようなコードになってしま

$n = (($i == 1) ? 2 : (($i == 2) ? 3 :$i));

括弧だらけで読みにくいったらありゃしない。三項演算子を使うなら一回まで。約束守れないやつは丸めゴミ箱にでも捨てちまえ。

11. 真偽値のチェックは生でいけ

if ( $flag ) {
}

仕様をちゃんと把握しているなら真偽値のチェックなどこれで十分。

もし事前にbool型だというのが確定してるのなら「$flag === true」を使えばいい。

12. ++と--の演算子を見極めろ

インクリメント、デクリメント演算子は前に付くか後ろに付くかで意味が変わるので慣れるまでは非常にややこしい

けがからなくなるくらいなら初めから使わないほうが良い。見極められないなら使うな。それがPHPerなのだ。

13. 代入演算子を使え

文句なしだ。これは文句がない。

他にも色々あるので覚えておこう

$a %=  1;
$a &=  1;
$a |=  1;
$a ^=  1;
$a <<= 1;
$a >>= 1;

14. 変数dump関数はより便利に

てっとり早く画面に表示する際にpreはよく使うが、デザインの関係上画面の文字が見えないときがある。

なのでdivを使って以下のようにしとくと便利だろう。

function p($var) {
    echo "<div align='left' style='background-color:white;color:black;'><pre>";
    print_r($var);
    echo "</pre></div>";
}

15. 定数から手を洗え

君らが通常作るアプリケーションなんぞに、定数なんぞ必要ない。いいか、もう一度言う、お前ら程度のもんが、定数使おう何ぞ、おこがましいわ!

大丈夫。なんでもかんでも定数にする必要はない。結局設定ファイルに定数をずらずら作りまくってわけがからなくなってるパターンが多い。

貴様たいなもんに、定数は制御できん。いいか設定ファイルYAML等のデータで持つようにし、その連想配列データ構造を一つ持ってるだけで定数の変わりになる。

このメリットに比べれば、定数だと書き換えられなくて良いという利点などこの歯のカスほどのものだ。そんなものは丸めゴミ箱へ捨ててしまうといい。

認識を改めろ。俺たちはより良いPHPerにならないために努力している。

16. $_GETと$_POSTを生で使うな

できれば何かしら簡単なクラスでもいいのでラップしろ。

class Request {
    private $parameters;
    private $method;
    function __construct () {
        $this->method = $_SERVER['REQUEST_METHOD'];
        if ( strtoupper($this->method) === 'POST' ) {
            $this->parameters = $_POST;
        }
        else {
            $this->parameters = $_GET;
        }
    }
    function param ($key) {
        return isset($this->parameters[$key]) ? $this->parameters[$key] : null;
    }
}

これだけでもいい。たったこれだけでもとても便利だ。ここから拡張してGETやPOSTを明示的に取るメソッドとかも作ってみるといい。自分の手を動かすのだ!

17. 関数だのオブジェクトだのの問題ではな

例が良くない。こんなのは引数20個ある関数からset20回呼ぶオブジェクトに変わっただけではないか

そもそもこの20個の引数はなんなのか。何かのデータ構造なんであれば連想配列にして引数一つとして渡すべきだし、それぞれまったく異なる用途の変数なのであればWindowsプログラミングじゃあるまいし20個も引数取る時点設計が間違えている。

何がいいたいか。別に関数でもオブジェクトでもどっちでもいいということだ。

そんなことで悩んでる暇があったら設計を見直せ。

18. メソッドチェインを愛用せよ

スキあらば自分自身を返せ。スキあらばオブジェクトを返せ。配列はArrayObjectのARRAY_AS_PROPSで返せ。

ひたすらメソッドチェイン。来る日も来る日もメソッドチェイン。とにかくメソッドチェインを使い続けろ。そこに未来はある。

19. コードの汎用化は慎重に

どんなコードも繰り返すな。もし、少しでも同じコードを書いていたなら、それは関数に置き換えてしまえ。

・・・と、いうのはやめなさい。

一見同じように見えた処理でも前後の流れでまったく違うものということが往々にしてある。

まとめ方にも問題があるケースもある。何でもかんでも関数化すると、関数が膨大に増えていく。君は見たことがあるだろうか。common.phpやfunction.phpの恐ろしさを。

かに細かく関数化はされているが、適切に関数化していないのである。結合度が非常に高い。なんでもかんでも盲目的にまとめれば良いという話ではないのだ!

20. 結合度は適切に減らし、適切に結合せよ

あまりに極度に意識しすぎると、プログラムそのものができなくなる。そういう状態に陥る。

気を抜いて。そう気を抜いて。所詮あなたコードなんてすぐに消えてなくなるよ。きっともっと偉い人が作り直すよ。だからまずは思うが侭にやるといい。

結合度を減らすというのは非常に難しい何度何度も失敗し続けて、ようやくここは分けた方が良かったんだなと気付く。次に活かそうと心に決める。そしてまた同じ過ちを繰り返していくわけだ。

まずは実装することだ。これが一番の早道だ。まずはがっつり結合した関数をあえて作るといい。何も考えずに作ろう。

そしてその後に、一部分使いましたいとおもうことがあるはずだ。その時に関数に切り出そう。それを繰り返すといい。そのうち初めから分けた方が良いと気付く。

何事も経験が必要である経験を積まないプログラマ丸めゴミ箱に捨ててしまえ。

さて、先の例で言うならば、私ならadd_result_outputという関数を作ってしまうだろう。だってaddとresultを連続して呼ぶのはめんどくさいんだもん。一連の流れをいつも使うのなら、その流れをやってくれる関数を作ればいいじゃないか

function add_result_output ($iVar, $iVar2) {
    $r = add($iVar, $iVar2);
    echo result($r);
}

もっと言えばクラス化してしまってもいいかもしれない。どんな感じになるかは君の手を動かして確認しよう!


最後

このTipsはとてもわかりにくく、ニッチ過ぎる部分も多いかもしれない。

しかしもう一度タイトルを確認してほしい

あくまでも「より良いPHPerにならないための20Tips」なのだ。

君はこの記事を鵜呑みにしてはならない。PHPPHPと見抜けないPHPerはPHPを使うのは難しい


おまけ

もし、あなたPHPプログラマなら、公式のPHPドキュメントあなたのケツの穴を拭くための紙になるだろう。

私は、それぞれのセクションを眺めて、各関数でどんなことが出来るかなんぞ、歯クソのゴミ程に役に立たないとおもっている。動けばいい。はは。

あなたは、PHPで用意された既製関数で多くのことが実現できることに、(俺の仕事を減らすなと)驚くはずだ。

この記事があなたの役に立たない事を。

どんなコメントでも待ってます

ふざけんな!


個人的な感想

この記事に書かれている内容は、丸めゴミ箱に捨てた方が良いレベルです

もしここまで読んでしまったら、丸めゴミ箱に捨てましょう。



プログラ増田のあなぐら

2011-01-12

http://anond.hatelabo.jp/20110112023237

より正確に言えば、li要素がネストしたときCSSでlist-style-typeプロパティに何が与えられているのか

IEchromeで同じ表示だったので、W3Cが標準を定義をしているのかもしれない

2010-07-28

http://anond.hatelabo.jp/20100728204309

もはや3項演算子を使いたいという事が目的になってやがるw

そもそもCとかC++初心者で?のことを良く理解していないレベルに読みにくいよ

だいいち、そのレベルなら ifで書けばいいだろうと。

そもそも

while( (*p++ = *c++) != '\0' );

のような 異なる演算 を 1文に書くのがCスタイルだから

c = param [ a&gt;=0?a:0 ];

みたいな、使い方 をして 他の演算引数に3項演算子を使ってるならわかるが

単なる代入だけで、しかも複文でネストすんならifで書けや!

ネストするってことは条件があるていど複雑ってことで、あとで、デバッグ用のif入れたりprintf入れたり改造する可能性があるってことを考慮してくれ。

 

変に?をネストさせて、『他人が間違えて』間違った改造いれたりしたら、どうするつもりなんだと?

間違った奴が悪い?複雑なネストして、間違いやすいコードを残した奴も悪いよ。

 

簡単にいえばたった、5行のスパゲティ

http://anond.hatelabo.jp/20100728203604

三項演算子って使い方覚えるとすごい便利だからな。ネストしまくれば一行でいろんな処理を完結できちゃったりもするし。

2010-07-26

http://anond.hatelabo.jp/20100726121223

それがやりたいなら、ボタン1個で勝手ネストしてくれる開発環境エディタ使ってくれ。

viしかつかえない?いや、今時、windows側でnfsなりsmbなりで、マウントしてwindowsのツールでエディットせいや。もしくは、マクロぐらいくめや。

 

いや、うん。プログラマ自体はさ、たかだか数Kか、十数Kしかみないから、それでいいんだろうけど。

それを組み合わせて、数百Kとかのソースコードメンテナンスする身になってくれ。

世の中には、アプリ全部を端から端まで、みているアーキテクトという人間もいるんだよ。

 

え?アーキテクトはコードは見ない?いやいや、ご冗談を。メインリポジトリ配下は全部見なきゃアーキテクトなんてやってられないよ。

もちろんマクロにではあるけど。何かあったらミクロに見ることもあるわけで、そんときに検索していてif 0とかだと、イラッと来る。しかも広域。

 

ていうか、#if 0 をネストするようなソースコード、何かが間違ってるから、作り直せ

http://anond.hatelabo.jp/20100726110432

コメントで /* */ ってネストできないけど #if 0 #endif ってネストできるから

ついつい使っちゃう

2010-01-28

http://anond.hatelabo.jp/20100128100846

気にするのは開発者だけ、ってのはまさにその通りなんだけど、この世界意外にコーディングルールにこだわる人間が多い(つーかルールだからな)のもまた事実

ただのforeachに注釈付ける必要はないと思うけど、いろんなところで微妙コードは直させられるように指示されることもままあるよ。

俺はそんなの関係ねえ!とばかりに三項演算子ネストさせたりしてるけど。

2009-09-16

http://anond.hatelabo.jp/20090916142456

セクショニング・コンテンツ要素やセクショニング・ルート要素のアウトラインは、一つ以上の潜在的にネストしたセクションから構成されます。セクションとは、本来の DOM ツリーのいくつかのノードに相当するコンテナのことです。略(アウトラインの中のセクションとは、section 要素に相当するものもあるかもしれませんが、section 要素のことではありません。これらは、ただ単に概念上のセクションでしかありません。)

http://www.html5.jp/tag/elements/headings-and-sections.html#outline

セクショニング・コンテンツ

ヘッディング・コンテンツ(このセクショニング・コンテンツ見出しとなる)

アウトライン - 一つ以上のセクションから構成される

セクション - セクショニング・コンテンツでもよい

セクショニング・コンテンツならヘッディング・コンテンツがあることが期待されるをおくことが出来る(なくても良い)?

アウトライン - 一つの段落のみのセクションかも知れない

セクション - セクショニング・コンテンツでなくてもよい

2009-06-24

http://anond.hatelabo.jp/20090624133129

ネストがさらに一段浅いが「おまんこ」なんてのもあるね。御まんこ

http://anond.hatelabo.jp/20090624132808

ネストが一段浅いが「おみあし」なんてのもあるね。御御足。

2008-01-29

ネストってなんね?

http://anond.hatelabo.jp/20080129115825


入れ子構造(はてなキーワードの説明)?


よくわかんなーい。ネストフラットに?


ますますわかんなーい。

mjd?

http://anond.hatelabo.jp/20080129103249

http://anond.hatelabo.jp/20080129104430

うそん。まじで?

ツリー浅いといいけど、深くなるとネスト見にくくない?


えっと、あとで見にくいツリーを提示するから、見やすいって話をもう少し教えてくれ。

トラックバックの表示方法が変わって

見にくくなってない?増田日記のツリー表示。

ツリー表示は言い過ぎか。トラックバックの表示方法といった方がいいか。


読んでいる日記トラックバックしている日記が見つけにくくなった。ツリー全部表示されてるし、ネストは深くなるとフラットなっちゃうし。


大ツリー大会になっているコメントなんて、関連探すだけで一苦労だ。

はてな中の人、どうよ?見やすいと思う?元に戻してくれー。

2007-12-06

続「ワード・エクセルできます!」

「ワード・エクセルできます!」を書いた者です。続き。

はてブで「3が分からない」という声を多くいただきました。MIZさんの指摘どおり、順にAlt+Enter、表示形式、条件付き書式、四捨五入の考え方、並べ替え(またはフィルタ)が分かるかどうかを試すという意図で書きました。が、どうやら条件付き書式は必須と言うよりアドバンストな機能のようなので、取り消します。

私の仕事に「エクセルで作った表にそれぞれ数値を入れてもらって、集まったシートを集計する」というのがあって、「黄色い所に数字を入れてください。間違っていたら赤くなるので、赤くならないようにしてから提出してください」と説明して、必要な部分以外ロックしたファイルを配布する、という風に条件付き書式を活用しています。もらったファイルは一つにまとめて串刺し集計。

1から100までの連番を1分で作る

Alt+Enter並に重要ですね。昔はA1に0、A2に「=A1+1」と書いて、A2を下に向かってコピーしたりしていました。

solute 1/1と入力して1月1日にしない方法がわかる。

重要ですね。表示形式の点でかぶるので、2を削除してこれにしましょう。

legnum シート名をセルに表示すんのって→しか無いの?RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))

私もそれしか思いつきません。というか、見て単純に「すごいな」と思いました。

pukada ifとvlookupが使えればエクセルできるって言っていいレベルだよね?ね?

ifとvlookup重要。特にvlookup。値によって16くらいに条件分岐させる必要があったとき、ifのネストは7段階(だっけ?)までしか使えないからと、ifでまず上位8つと下位8つに切って、中をさらに4つずつに分けて……とやっていたのが、vlookupで一発になりました。


バッドノウハウ(海外人気エントリ紹介ブログ風)について。

面白いのは、全部間違っていないところ。一応、与えられた条件をクリアーしてしまう。

また、こういった人たちの二大特徴「TIOOWTDI」と「紙至上主義」を上手くつかんでいると思う。

TIOOWTDIというのは自分の造語だけど、There Is Only One Way To Do It。一つやり方を覚えたら、それがどんなに非効率的でも、別の方法を探そうとしたりしない。「だって、それでできるんだから別にいいじゃん」

紙至上主義というのは、エクセルに対する捉え方。紙にきれいな書類を印刷するためであり、印刷がきれいだったら中身はどうだろうと構わない、という考え方。中身をエクセルで計算させようが、手計算しようが、結果が一緒だから構わない。データの再利用はあんまり考えない。この間「データに注釈が必要だったらそばに書いておいて」といったら、オートシェイブで四角形を書いて、その中にテキストを入れてきた人がいた。あとで並べ替えたり、一部だけ切り出したりするのに。

で、こういった人たちに、どうしたら効率的なやり方を覚えてもらえるかというのは、昔から考えているんだけど、結局、彼らは現在のところ「新しい方法を覚える手間>作業の手間」と考えているからそうなるのであって、ムリヤリ教えてもしょうがないな、と考えるようになった。http://anond.hatelabo.jp/20071203024102の方法は、その人がエクセル上達したいと思っているからできるんであって「いいじゃん、これでおんなじことはできるんだから」という人には手の打ちようがない。誰かが「文面が一緒で、宛名だけ違う書類を何枚も書かないといけないよ、打ち直すのが大変だ」とぼやいていたらそこで差し込み印刷を教える。そういう方法で本人に便利さを実感してもらわないと、どうせ忘れちゃうよ。

ただ、相手がおじさんとかだと「こないだの便利な方法、あれやってよ」と毎回頼まれるという事態に陥るという最悪の可能性もあったりするけど。

最後に。

2.カナ入力で濁音/半濁音の記号を文字とバラバラに入力するの禁止(そもそもどうやって文字入力してるの!)

拗音・促音を半角カナで表現していた人がいた。

2007-11-20

http://anond.hatelabo.jp/20071120141545

茨城お酒おいしいよね。常陸ネストビアーもうめー牛久ワインもけっこう飲めるし。

警察ダメだけど。


http://anond.hatelabo.jp/20071120143010

いや、「酔わせる」ってスーフリ(なつかしいな)じゃねーんだから。アルコール漬けのツナなんて食いたくもないです。

「おいしーねー(ニコニコ)」「もう増田くんが日本酒のませるから酔っちゃったー(言い訳)」

が大事なわけで。リアルな血中アルコール濃度なんか低い方が良いに決まってます。

2007-09-10

プライド

おっさんの前で、その人より立場が上の別のおっさんの話をして褒めるとその場が凍りつくらしい。

でも、なんか最近分かる気がした・・・。

が、上には上がいるのは世の常で、

どの世界も、井の中の蛙が入れ子(ネスト)になっているような感じだから、

ある程度、井の中の蛙思考も向上心もストップしないと破綻するな。と思った今日この頃

2007-07-20

http://anond.hatelabo.jp/20070720132118

その昔って、現役で手打ちの自分は生きた化石かなにかですか!

そもそも手打ち職人って、うどんかそばじゃないんですから……。

7、8年前ならいざしらず、いまどきtableつかわないと思った通りのレイアウトができない方がおかしいと思うんですが、世の中ではちがうのでしょうか……。

10年前は複雑なtableのネスト構造や、スペーサーの使い方で自由自在にデザインしてみせますよ!というのをウリに、HTMLを手打ちしてました。

2000年ごろには、逆にtableやspacer.gifを排除するために、HTMLを手打ちしていました。

なんでそんなめんどくさいことしてるの?Dreamweaverとか使えないの?といわれ続けていく歳月。

でも、SEOブームなんてのがきたときは「いままでそんなこともしてなかったの?」って感じでスルーできたよ。

最初っから構造を意識して書いてるんだから、インチキSEO業者なんて入り込むスキマもないよね。

んで、動的コンテンツを作るときにも、エンジニアさんと連携しやすい。

問題は、DreamweaverでしかWebが作れない自称Webデザイナーと共同作業しにくいこと。

それでもさいきんはツールのほうが賢くなってくれたので、大分マシになったよ。

さすがに、ポチポチタグばかり打ってる年齢でもないので、もっと他の部分で自分のリソースを使う割合が増えたけど、美学というか信念というか、そういうものを継承してくれるような若手がなかなか居ないので、あいかわらずエディタは手放せないのです。

まあ、ライティングも編集オーサリングも同時にできちゃうから、便利っちゃ便利だけどね。

そんな増田は古い人間でしょうか……。

海は死にますか、山はどうですか。

2007-02-22

実装ではなく趣旨を理解しよう

*{ margin : 0 }はもう古い!? | Emotional Web

はてなブックマーク - *{ margin : 0 }はもう古い!? | Emotional Web

はてなが酷い。

はじめに

base.cssとかcommon.cssとかを書いて読み込ませるのは、何のためだったか考えてみよう。古い新しいの問題じゃないと気づくだろうか。少なくとも、レンダリング時間なんて完全に後付けだと洞察できるはずだ(あなたたちはjs大好きだよね)。

さて、真っ新なとこからCSS書いてくとき、どんなデザインにしろほぼ毎回指定する要素が出てくる。a img{border:none;}とかhtml,body{margin:0; padding:0;}とかだ。それなら始めにa img{border:none;}とかを羅列したファイルを用意しておけば、余計な手間が省けるじゃないか。たぶん根本の動機はこんなとこだろう。

それがいつの間にかデフォルトで適用されるスタイルキャンセルするっていう方向へ迷走し、*{margin:0; padding:0;}なんて表現が生まれた。この指定は言うまでもなく有害で、著名なのはフォームのボタンが縮こまったり、liのネストが判別できないなどの副作用が生まれる。あまりにもすべてがキャンセルされるため、わざわざひとつずつ要素のスタイルを定義しなければならなくなって、ファイルサイズは増え可読性は下がり、冒頭で言うようにレンダリングにも時間が掛かるようになる。FireBugがない時代、この要素のスタイルはどのファイルのどの部分で指定されてるのか調べるのは本当に大変だった。*.cssgrepしたとしても、単にul li{}とか書かれてるのがカスケーディングしてたらお手上げ。

これらのデメリット認識したとき、はて*{margin:0; padding:0;}のメリットはなんだろうと考える。あ、特にないよね。じゃあやめよ。←いまここ

こんなのは実際にCSSを書いてたら気づくことだ。海外とか時代とか関係ない。元記事の趣旨は「*{margin:0;}は古い」じゃなくて「どんなCSSが効率的か Part2」だ。レンダリング重いから*{margin:0;}やめようなんてコピペ脳丸出しじゃ、いつまで経っても効率的なCSSなんぞ書けんよ。

 

原理主義者が「(例えば数十年後にリリースされた)UAがどんなスタイルを適用するかわからないので、最初にリセットするのは永続性完全性の観点から意味がある」と言うけども、未知のUA(というかデフォルトスタイル)まで考えてCSSを書くのはあまりに大変だ。それに、そんなことになれば、たぶん、compat.user.cssみたいなのが流行るはず。デフォルトスタイルに頼った表現がしょせん実装依存なのは認めるけど、ちょっと非現実的すぎるので、考慮から外させてもらう。俺はいま実務の話をしたいんだ。

 

じゃあどんなのがいいんだよ

で、元記事では、じゃあどんなCSSがいいのかって点がついで程度にしか触れられていないので、俺なりに考えてみた。

a img{border:none;}

これは外せない。aの中のimgにborder付けたいってほうがイレギュラーなので、わざわざa.logo img{border:1px solid #333;}なんて書き直すのも苦にならない。例外には手作業でもって対応すべき。

html,body{margin:0; padding:0;}

ほとんどの場合、隙間を空けたいよりも隙間を空けたくない。キャンパスはフルに使いたい。

印刷時にはそうでもないので、@media print {body{padding:1cm;}}なんてのがあってもいいけど、それはまた別の話。あとそういうのは印刷するユーザー側で指定すべきだとも思う。理想論だけど。

*{font-style:normal;}

lang="ja"な文章において斜体は不要。どうせあなたはemとかaddressとかにfont-style:normal;付けるんだから。

pre,code{font-family:monospace; white-space:pre;}

preやcodeがsans-serifだとイラっと来ますよね。

これは絶対やるな

やられるとイラっとくるもの。個人的。

body{font-family: "MS Pゴシック";}など

俺はページをメイリオヒラギノやM+ FONTやVLゴシックで見たいんだよ! お前の趣味押しつけんな! あと最後に一般名(sans-serifとか)くらい書け!

でもpre.2ch-ascii-art{font-family: "MS Pゴシック";}なんてのはやさしさが溢れていてとても好ましいと思う。部分的にfont-family指定するのは別にいいけど、全体のデフォルトフォントをいじられるのは不愉快でしかない。

pre{overflow:auto;/* or scroll */}

まあ仕方ないのはわかる。解決法も知らない。けどホイールスクロールしてるとき興味のないサンプルコードで引っかかるのはとてもムカつくんだ。俺は君のサイトが崩れてるかどうかより、いつも通りのスクロールに関心がある。

pre以外にグラフィック目的overflow:auto;を指定するのは論外。

まとめ。そうねえ。

CSSは個々人のスタイルを反映してるということでしかないんじゃないの」

「そうですね」

- 転職ならen
- 派遣ならen
 
1ページ中1ページ目を表示(合計:23件)