namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: repository and TAG



Yukinori MAEDA <yuki@xxxxxxx> wrote:

>実は、namazu MLも、namazu-dev MLも入ったばかりで、現在どのよ
>うになっているとか、現在、どなたが commiter なのかとか全くわ
>からないのですが、よろしくお願いします。

こちらこそよろしくお願いします。 committer (commiter?) は今
のところ私と野首さんと前田さんしかいません。ほかのみなさまも
ぜひお願いします。 [namazu 678] 参照のこと。


>ここから、本題なのですが、どうやら、最近のnamazu MLを見てい
>ると、namazu-1.4系の開発はstopし、次期versionの2.0系の話を進
>めていこうという感じのようです。

そうです。v1.4 をリリースして、それが普及してしまうと互換性
を無視した改良がしづらくなってしまうので、v1.4 を見送って 
v2.0 を作ろう、という意図があります。


>本日の朝cvsのユーザを作成して頂き、最新版を取得しました。こ
>れは、v1.4系と思われるので、もう触らない(commitしない)という
>ことなのでしょうか?
>
>それとも、これをベースに進めていくので、触っても良いのでしょ
>うか?

はい。このコードを元に進めていくつもりです。今までは私一人が
ソースを管理していましたが、今後は複数人で協力しながら開発を
進めていければ、と考えています。

ソースコードにはおかしな点がたくさんあると思います。遠慮せず
に、びしびしと指摘して修正してくださいませ。共同開発を通じて
勉強させてもらうつもりでいます (これが大きな目的なのだ)。

C言語の方は大の苦手なので、相当にひどいコードを書いているは
ずです。適宜、指摘して修正してもらえると助かります。 Perl の
方はだいぶ慣れてきたので自分なりの規則ができつつあります。参
考までに以前にまとめたメモをメイルの末尾に添付しておきます。


>というのは、ソースにリビジョン番号が入っていないため、非常に
>わかりにくいので、すべて $Id$ を入れてしまおうかと考えたので
>した。

えっと、ただいま私の方で入れておきました。


>また、ブランチ等はあるのでしょうか?

ないです。実をいうと私は CVSをつい最近、使いはじめたばかりな
ので、ブランチは作ったことすらないです。:)


>あと、何か暗黙の了解ごと見たいなことがあれば教えて頂きたいの
>ですが。

まだなにも決まっていません。とりあえず私が考えているのは

  * namazu-dev メイリングリストで連絡を密にとる
  * ソースを修正したら ChangeLog に記録を残す
  * 大きな修正をする前には namazu-dev で宣言する
    - 前もって宣言すれば仕事の分担ができる
  * 小さな修正は事後報告で OK
    - バグ修正など
  * 不安なコードは namazu-dev にパッチを流して検討する
  * コメントは英語で書く (世界進出にむけて :-)
    - 残っている日本語のコメントは見つけ次第、英訳する
  * 下手なコードを見つけたらやさしく指導する :)
  * 名前付け規則をきちんと考える
    - 英語として変な名前はやめよう

といったところです。が、私は共同開発の経験はほとんどないので
この辺のノウハウはわかっていません。その点においても、経験を
通じて身につけていけたら、と考えています。みなさま、よろしく
お願いします。

-- Satoru Takabayashi
見捨てないでくださいね :)

書法

  * 必ず -w オプションを用いる  
     #! /usr/bin/perl -w
  * 必ず use strict する
  * local() は使わない
  * 変数は使う位置で宣言する
    - C言語のようにブロックの最初で宣言する必要はない
  * 変数の宣言時にはできる限り初期化を行う
  * for は for my $tmp (@foo) { ... } のように用いる
    - my $tmp の部分が要 ($tmpのスコープをループ内に限定する)
  * 戻り値は陽に return する
    - サブルーチン最後の式が return される、というルールに頼らない
  * built-in関数呼び出しの際は省略できる丸括弧はできるだけ省く
    - ○ substr $str, $offset, $len;  × substr($str, $offset, $len)
  * 正規表現では $&, $', $` を使わない
    - プログラム全体が遅くなるため
  * サブルーチンの呼び出しは foobar() とする
    - &foobar は不可 ("&" は不要)
  * サブルーチンの定義ではプロトタイプ宣言を行う
    - sub foobar($$$) { ... } のように
  * $_ はできる限り使わない
    - $_ はグローバル変数なので危険
  * open() は使わない。 use IO::File を用いて
    my $fh = new IO::File; $fh->open() とする
  * ファイルは陽に閉じず、 destructor にまかせる
    - $fh->close() しない (スコープで制限する)
  * リファレンスは大いに活用する
  * 既存の perl module を活用する
    - 車輪の再発明をしない
  * $| といった特殊変数はできるだけ用いない
    - $| は STDOUT->autoflush(1) で代用できる
  * グローバル変数はできるだけ使わない
  * コードはできる限りモジュール化する
    - APIを定めて拡張を容易にする
  * 必要に応じて Object Oriented Programming を取り入れる
    - すべてを OOP で書くことはない
  * 長い正規表現には適宜 /x モディファイアを適用する
  * 変数を使った正規表現には安全なら /o モディファイアを適用
    する
  * コメントは英語で書く


名前規則

  * テンポラリな変数は型を問わず tmp という名前にする
  * for 文のカウンタには $i, $j, $k を用いる
    - 3段より深くしないように気をつける
  * サブルーチン名は動詞 (+目的語)、変数名は名詞
    - e.g. update_registry()
  * 語の連結にはアンダースコア ('_') を用いる
    - e.g. get_os_name(), $os_name
  * 局所変数の名前は小文字
  * グローバル変数の名前は capitalize し、アンダースコアを省
    略する (要検討)
    - $IndexType
  * 配列、ハッシュの変数名は複数形にする (要検討)
    - @files
  * 変数名の省略はできる限りしない
    - $on (OS name) などは不可
  * が、必要に応じて省略する (要検討)
  * 省略のルールは明確化する
    - file handle -> fh
    - pointer     -> ptr
    - index       -> idx
    - current     -> cur
    - protocol    -> proto
    - length      -> len
    - string      -> str
    - argument    -> arg
    - source      -> src
    - destination -> dest
    - control     -> ctrl
    - module      -> mod
    - language    -> lang
    - 他にもあれば追加する
  * 動詞は省略しない
  * package が異なれば同じサブルーチン名を用いて良い


インデント

  * インデントは 4文字単位

    $foo = 1 + 2 + 3;
    $bar = ((1 + 2) + 3) * 4;
    if ($foo == $bar) {
        print foobar($foo, $bar), "\n";
    } else {
        die "error";
    }

    sub foobar ($$) {
        my ($foo, $bar) = @_;
        return $foo + $bar;
    }


Perl関連リンク

  * CPAN
    <ftp://ring.asahi-net.or.jp/archives/lang/perl/CPAN/>
  * Perl Style
    <ftp://ftp.dti.ad.jp/pub/lang/CPAN/doc/FMTEYEWTK/style/slide-index.html>
  * perl5.005_02のドキュメント
    <http://www.kt.rim.or.jp/%7ekbk/perl5.005/index.html>
  * perl5.004_04のドキュメント
    <http://www.kt.rim.or.jp/%7ekbk/perl5.doc/index.html>
  * Perl information memo
    <http://www.st.rim.or.jp/~cond/perlinfo/index.html>
  * /pub/IIJ/dist/utashiro/perl directory
    <ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl>
  * /pub/lang/CPAN/authors/Hirofumi_Watanabe directory
    <ftp://ftp.dti.ad.jp/pub/lang/CPAN/authors/Hirofumi_Watanabe>
  * FMTEYEWTK
    <ftp://ftp.dti.ad.jp/pub/lang/CPAN/doc/FMTEYEWTK/index.html>
  * Yahoo! - Computers and Internet:Programming Languages:Perl
    <http://www.yahoo.co.jp/Computers_and_Internet/Programming_Languages/Perl/>
  * JPerl for Win32
    <http://www.yk.rim.or.jp/~hizumi/perl/index.html>
  * Index of /archives/lang/perl/CPAN/modules/by-authors/Gurusamy_Sarathy
    <http://ring.nacsis.ac.jp/archives/lang/perl/CPAN/modules/by-authors/Gurusamy_Sarathy/>
  * Learning Perl/Tk
    <http://tanaka-www.cs.titech.ac.jp/~ueki/PerlTk/index.html>
  * ActiveState Tool Corp. - Professional tools for Perl developers
    <http://www.activestate.com/>
  * Index of /archives/lang/perl/CPAN/modules/by-module/Tk
    <http://ring.nacsis.ac.jp/archives/lang/perl/CPAN/modules/by-module/Tk/>
  * What's wrong with Perl   
    <http://www.stud.ifi.uio.no/~larsga/download/artikler/perl.html>