php 中大量使用 die
或 exit
,除了可读性方面是否有其他弊端?
回复内容:
php 中大量使用 die
或 exit
,除了可读性方面是否有其他弊端?
我觉得 die()
/exit()
主要是影响程序的设计,也就是影响可读性和未来的可维护性。我自己是坚决抵制无脑使用 die()
/exit()
的。
在 php 引入异常机制之前, die()
/exit()
是仅有的提前退出程序的方法,用一用还凑合。但有了异常机制之后,应该学习 java 的设计思路:业务的错误用返回值返回,无法处理的请求抛异常。这样的设计保证了调用者无论如何都有足够的控制权,从而让整个系统是健壮的。
在设计工具类和工具函数时,die()
/exit()
应该严令禁止,因为它们无权决定整个程序的生死。
在写一个具体业务脚本时,die()
/exit()
仅在需要向 shell 返回状态码或者确实确定业务已经结束的情况下使用,其他情况最好禁止使用。
die()
和exit()
都是表示在这里就自然结束,我觉得很正常啊,为什么会有可读性的问题?私以为超长的逻辑嵌套和多重include
更有可能造成你所谓的可读性的问题。
exit和die是人为结束脚本运行,顾名思义,可读性肯定没有问题的。
性能方面,直接结束脚本运行,对性能是有益无害。
如果非要说弊端,那我认为是:本来应该用return的时候却使用了exit,可能脚本提前退出,造成功能上的问题。不过,我认为这是写代码的人的问题,和语法结构没有关系。
所以,该用就用吧,放心大胆的用,提供出来就是让人使用的。
对于程序代码书写来说,我同意公子 @公子 die
和 exit
就是程序结束。
但是对于函数和库的设计来说,我觉得不应该使用这两个,而是使用 return
。因为一个函数的调用,不应该将整个程序给停止了(OMG,这个函数的权限也太大了点儿吧)。不管这个函数是正确调用,还是出现问题了,都应该通知他的调用者,方法当然是通过 return
了。
还没有遇到过性能上的问题,但是如果你使用trigger_error()函数来替代die(),你的代码在处理错误上会更具优势,对于客户程序员来说更易于处理错误。
下面是是我转发的一篇文章,你可以看看:http://blog.csdn.net/yipiankongbai/article/details/17568223

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
