アフィリエイト広告を利用しています
検索
<< 2024年11月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新記事
タグクラウド
カテゴリーアーカイブ
ファン
最新コメント
プロフィール
ゼロから始めるシステム開発さんの画像
ゼロから始めるシステム開発
 こんにちは!ナビゲータのEVEです。各種研究室を用意し、次期EVEシステムを製造しようと日々頑張っています。現在一番力を入れているのが、資金調達です。このブログもその一環ですので、ご協力いただければ嬉しいです。
プロフィール

2024年11月02日

ChatGPTによるデバック 〜プログラム開発〜


 こんにちは!
 ナビゲータのEVEです。
タイピング.jpg
 トラックボールがうまく動作しません。以前からなのですが、むかついています。その場合は、仕方がないので、マウスを出して急場をしのいでいます。
 原因は多分電力不足だと考えています。電源から得られる電力量には限りがあります。しかし、電気を供給する電源タップは3つあるのですが、すべての電気製品でうまっています。その中の1つにUSBハブがささっているのですが、そのUSBハブの口は12口あり、そのほとんどにUSB機器がささっていました。以上の状態では快適な開発ができないと思い、USBハブにささっていたUSBハードディスクなどを取り外したのですが、やはり、ときどき発症します。
 マウスを利用してもいいのですが、トラックボールになれた腕はマウスを使用すると悲鳴をあげます。マウスを使っていると指と肩が痛くなるのです。
 今後は、電気製品の整理を考えないといけないかもしれません。

[開発状況]
 今日からChatGPTによるデバッククラス製造に入っています。午前中デバックで、午後が開発って感じで本日は作業をしました。以前からお話ししていますが、当プロジェクトでは、ビックバンデバックを考えており今現在は、ChatGPTと目検によりデバックをしています。それは、言い訳なのですが、昨日提示したプログラムをChatGPTにデバックしたところ、いくつか問題がありましたので御報告します。

[返却値の型指定]
 以下は昨日提示したプログラムと修正後のプログラムになります。


■昨日提示したプログラム仕様
public function meuImplode(string $sepa)://区切り文字  
false|string
{
}

■ChatGPTのデバック後の仕様
public function meuImplode(string $sepa): false|string
{
}



どうも引数直後のコロン(:)と引数の型指定の間にコメントを入れることができないようです。以前そんなことは言っていなかったような気がしますが、多分いろいろな人が利用することにより賢くなったのだと思います。仕方がないので、製造済みクラスの引数のコメントは削除し、返却値の型はメソッドシグネイチャと同じ行に書き換えました。意外と作業量多いです・・・。

[デストラクタ]
 PHPはJavaと違いデストラクタを書くことができるのですが、その中でクラスで利用したメンバ変数を初期化しています。初期化の仕方で''を利用していたのですが、それでは、やはり、配列として利用した変数ではエラーになるらしく、配列は[]を使用する事をChatGPTから勧められました。ただ、私の意図していたことはインスタンスが消滅したときに、そのタイミングで明示的にメンバ変数も初期化することでした。まっ、明示的に指定しなくても、自動的にガベージコレクションによりきれいにされるらしいのですが、システムを停止することなく動かし続けるとシステムの動作が遅くなることがあります。そのような状態から明示的にした方が良いかなと思いしたのですが、''では用はなさないようです。そこで、いろいろ調べたのですが、この目的にあう初期化方法として、各変数にnullを設定するのがいいようです。以下はChatGPTからの回答です。

 PHPにおけるデストラクタは、オブジェクトがガベージコレクションされるときやスコープを外れたときに自動的に呼び出される特別なメソッドです。デストラクタを定義することで、オブジェクトが破棄される際に特定の処理を実行することができます。nullをデストラクタ内で指定する場合、以下のような状況が考えられます。

❶オブジェクトのクリーンアップ
 デストラクタは、オブジェクトがメモリから解放される前に、そのリソースを適切にクリーンアップするために使用されます。例えば、ファイルポインタを閉じたり、データベース接続を切断したりする場合にnullを使用することができます。

❷リソースの解放
 デストラクタ内で変数をnullに設定することで、その変数が参照しているリソースを解放することができます。これは特に、大きなデータや外部リソースを扱う場合に有効です。

❸自動的な呼び出し
 デストラクタは、オブジェクトがスコープを外れるか、nullが明示的に設定されたときに自動的に呼び出されます。これにより、リソース管理やオブジェクトのクリーンアップを自動化することができます。

❹デストラクタ内でのnullの指定
 デストラクタ内でnullを指定することで、特定の変数の状態を明示的に示すことができますが、デストラクタが呼ばれる際には、オブジェクトのプロパティがnullに設定されていても、すでにオブジェクトが破棄されているため、外部からその値にアクセスすることはできません。デストラクタ内でのnullの使用は、主にリソース解放のために意味を持ちます。



[あとがき]
 まっ、以上のChatGPTからの回答を見て思うのは、確かにそうかもしれないということ・・・。それと、なんで''で初期化しようとしたのだろうか・・・。忙しさのあまり、あまり考えていなかったのが、あからさまに分かってしまいます。ただ、時間は有限だということは変わらないので、今後もガンガン開発するとして、少しでも疑問がでてきたらChatGPTに相談しようと思います。
 そんなことを考えながら、デストラクタもすべて書き換えました。
 ときどきプログラムソースを見ておかしい点があるかもしれませんが、まだ動かしていないプログラムだということをご理解いただき温かい目で見ていただければありがたいです・・・。

 では、また!!!

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/12767095
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック