簡體   English   中英

依賴編程語言的默認功能是明智的嗎?

[英]Is it wise to rely on default features of a programming language?

我應該經常依賴默認值嗎?

例如,在PHP中,如果您有以下內容:

<?php

$var .= "Value";

?>

這非常好 - 它有效。 但是,如果將這樣的賦值轉換為以前未使用的變量后來從語言中消除了怎么辦? referring to just general assignment to an unused variable.) (我指對未使用的變量的一般賦值。)

有無數的例子表明某些東西的默認值已經發生了變化,而現有的代碼卻沒用了。

另一方面,沒有默認值,會有很多代碼冗余。

處理這個問題的正確方法是什么?

在我看來,一旦語言達到一定程度的接受程度,語言變化的可能性非常低。

對我而言,每種語言都附帶一個(有時或多或少)獨特的功能集。 不使用那些,因為它們有一天可能會消失,似乎是短視的。 當然,不要僅僅為了這樣做而使用深奧的功能 - 確保你遵循通常的可讀性和最佳實踐原則,但我認為沒有必要區別於特定的功能。

編程語言的默認值特征,如果實際上是標准的記錄部分而不僅僅是實現的意外(許多過去的“默認初始化”),與編程語言的任何其他特征沒有區別。 你不妨問一下,依靠語言中的其他東西是否明智,無論智慧如何,答案是沒有選擇 - 你必須依賴某些東西,並且在未來的版本中可以假設任何東西都可以改變。

當然,如果您所依賴的東西是該語言的常用功能,而不是奇怪的角落情況,那么在未來版本中保留它的可能性要大得多。 此外,如果你擔心這些事情,那么選擇一個有着保持向后兼容性歷史的成熟語言是明智的。 有些語言需要付出很大的努力才能確保舊代碼在新版本的語言中運行,而有些則不那么強。

所以,這是一般的答案。 有關默認值的具體答案是,它取決於具體情況,相關語言等。 你可以完全依賴於C語言中的全局靜態變量在程序啟動時為零的事實。 其他一些案例顯然不太可靠。

如果某些東西是某種語言的定義特征,那么依賴它就可能非常安全。

你應該警惕依賴功能的地方是當你進入你未處理行為的區域,或者如果你通過將某個功能用於完全不同於預期的功能而“濫用”某個功能時。

由於“字符串的默認值”幾乎是主線方案,因此它可能是安全的。 更危險的是,如果你碰巧早先聲明了這個變量,你可能會被它改變預期的值作為意外的副作用。

基本上,如果您沒有濫用語言功能或依賴未定義的行為,您可能應該更擔心代碼中的意外副作用,而不是擔心語言的變化 - 特別是如果語言成熟的話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM