日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sap打勾选项记录_记录意外的开关选项

發(fā)布時(shí)間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sap打勾选项记录_记录意外的开关选项 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sap打勾選項(xiàng)記錄

Java開發(fā)人員可以做很多事情來使自己的生活以及維護(hù)該代碼的其他人的生活更加輕松。 在本文中,我將探討開發(fā)人員可以采用的一種非常簡單的方法,以使每個(gè)人都更輕松。 對于每個(gè)閱讀這篇文章的人來說,這篇文章的要點(diǎn)似乎都很明顯,但是我發(fā)現(xiàn)這樣做的頻率比我預(yù)期的要少得多。 總之,開發(fā)人員通常應(yīng)記錄它們的值開關(guān) ,當(dāng)該值不被任何明確的表示對-ing case是內(nèi)聲明switch 。

在進(jìn)行具體說明之前,我將添加一些警告。 有時(shí),記錄switch到的值與case沒有明確匹配可能沒有意義。 其中一些列在這里。

  • 所打開的值是敏感的,出于安全原因不應(yīng)記錄。
  • 在許多情況下,打開該值都不會導(dǎo)致匹配,因此開發(fā)人員不希望不必要地登錄。
  • 可以提供一個(gè)default值,該default值對于沒有匹配case塊的任何值都將始終有效(這似乎很少)。

在我所見的情況下,這是導(dǎo)致其成為我主要寵物怒氣的原因之一,上述警告均未適用。 實(shí)際上,在大多數(shù)情況下,開發(fā)人員已在default塊中提供了一條記錄的消息,警告該值是意外的,但同一開發(fā)人員未能提供不匹配的候選值。 下一個(gè)代碼清單顯示了一個(gè)人為的示例。

枚舉default ,不帶switch候選值登錄

/*** Provides the Roman numeral equivalent of the* provided integer.* * @param integer Integer for which Roman numeral* equivalent is desired.* @return Roman numeral equivalent of the provided* integer or empty string ("") if I'm not aware of* the Roman numeral equivalent.*/ public String getRomanNumeralEquivalent(final int integer) {String romanNumeral;switch (integer){case 0:romanNumeral = "nulla";break;case 1:romanNumeral = "I";break;case 2:romanNumeral = "II";break;case 3:romanNumeral = "III";break;case 4:romanNumeral = "IV";break;case 5:romanNumeral = "V";break;case 6:romanNumeral = "VI";break;case 7:romanNumeral = "VII";break;case 8:romanNumeral = "VIII";break;case 9:romanNumeral = "IX";break;case 10:romanNumeral = "X";break;default:out.println("Unexpected integer was provided.");romanNumeral = "";break;}return romanNumeral; }

此處的問題實(shí)際上是開發(fā)人員應(yīng)避免的更普遍問題的特定示例:沒有足夠上下文的日志。 在某些情況下,提供使日志消息更有用的上下文類型可能很困難或計(jì)算量很大。 但是,在switch語句中通常不是這種情況,我們可以在其中輕松記錄嘗試switch的值。 在上面的代碼清單中,將僅告訴開發(fā)人員在部署中支持運(yùn)行時(shí)問題的開發(fā)人員“提供了意外的整數(shù)”。 沒有任何上下文,很難知道提供的整數(shù)是什么,并且如果不知道候選整數(shù),就很難跟蹤發(fā)生了什么甚至無法重現(xiàn)它。

只需很少的精力就可以使此default日志記錄語句有用,這將在下一個(gè)代碼清單中顯示。

構(gòu)造更好的default日志語句

default:out.println("Unexpected integer (" + integer+ ") was provided, so empty String being returned for Roman Numeral.");romanNumeral = "";

“增強(qiáng)的”日志消息指示正在打開哪個(gè)整數(shù),并添加了由于該整數(shù)不是期望的整數(shù)而返回的內(nèi)容。 第二部分對于開發(fā)人員而言不是必需的,因?yàn)殪o態(tài)代碼將向開發(fā)人員顯示在這種“默認(rèn)”情況下返回的內(nèi)容。 但是,正在打開的整數(shù)的日志記錄非常有價(jià)值,因?yàn)橐院鬀]有很好的方法來訪問此信息,除非其他地方的其他日志消息清楚地表明正在打開的內(nèi)容。

我無數(shù)次成為開發(fā)人員未提供此簡單上下文的受害者。 這使原本很容易診斷的事情變得更加困難。 在極端情況下,我必須將此上下文添加到日志消息中,并等待再次遇到它。 如果開發(fā)人員在編寫代碼時(shí)添加了簡單的上下文信息,則可以更輕松地解決此問題。

在編寫自己的switch語句時(shí),我希望將這一概念更進(jìn)一步。 即使我的switch明確涵蓋了所有可能的(當(dāng)前) case我也通常添加一個(gè)default塊。 在編寫本文時(shí),此default塊是不必要的,并且“永遠(yuǎn)不會被調(diào)用”,但是我將其添加到了面向?qū)淼膕witch語句中(可以使用單元測試來實(shí)現(xiàn)類似的保護(hù))。 我添加了提供給switch語句的意外候選值的日志記錄,以便在代碼“上游”添加另一種情況時(shí),我的switch會在遇到意外值時(shí)Swift告訴我,并告訴我該意外值是什么。

通常會發(fā)現(xiàn),在不匹配case的情況下為switch語句提供候選值是一種特殊情況。 在這種情況下,拋出異常比僅記錄異常情況更合適。 一個(gè)標(biāo)準(zhǔn)的異常(例如IllegalArgumentException)可以很好地解決此問題(從某種意義上說,它是switch語句的非法參數(shù)),但是我偶爾也編寫了一個(gè)自定義的異常來幫助解決這個(gè)問題。 當(dāng)我決定實(shí)現(xiàn)并使用此自定義異常時(shí),做出該決定的部分原因是拋出該異常會鼓勵開發(fā)人員提供被打開的對象作為異常構(gòu)造函數(shù)的一部分。 接下來顯示此類自定義異常的典型示例。

SwitchOptionNotExpectedException.java

package dustin.examples.switchdemo;/*** Exception used to communicate a candidate value for* a {@code switch} statement not being matched by any* of the explicitly provided {@code case} blocks.*/ public class SwitchOptionNotExpectedException extends RuntimeException {/*** Object being switched on for which no matching* {@code case} clause existed.*/private final Object switchedObject;/*** Constructor accepting exception message and the instance* upon which the {@code switch} was being attempted when no* matching {@code case} was found.** @param newMessage Exception summary message.* @param newSwitchedObject Object being switched on for* which there was no explicitly specifed {@code case}.*/public SwitchOptionNotExpectedException(final String newMessage, final Object newSwitchedObject){super(newMessage + " (unable to switch on '" + String.valueOf(newSwitchedObject) + "')");switchedObject = newSwitchedObject;}/*** Constructor accepting the instance upon which the {@code switch}* was being attempted when no matching {@code case} was found.** @param newSwitchedObject Object being switched on for* which there was no explicitly specified {@code case}.*/public SwitchOptionNotExpectedException(final Object newSwitchedObject){super("Switch statement did not expect '" + String.valueOf(newSwitchedObject)+ "'.");switchedObject = newSwitchedObject;}/*** Provides String representation of the object being* switched upon.** @return String representation of the object being* switched upon.*/public String getSwitchedObjectString(){return String.valueOf(switchedObject);}/*** Provides type of object being switched upon.** @return Type of the object being switched upon or* {@code null} if that switched upon object is null.*/public Class getSwitchedObjectType(){return switchedObject != null ? switchedObject.getClass() : null;} }

開發(fā)人員是否只是簡單地記錄未找到切換候選者或引發(fā)異常是對此的響應(yīng),通常應(yīng)記錄或?qū)⒋蜷_的值記錄在異常中或包括在異常中,以使診斷問題變得更加容易。 上面的自定義異常將自動提供該消息,而與使用的構(gòu)造函數(shù)無關(guān),只要開發(fā)人員提供打開的對象即可。 在這種情況下,開發(fā)人員必須竭盡全力不提供該對象,而不僅僅是忽略或忘記包含它。

在排除了不適合登錄或?qū)懗霾黄ヅ渲档那闆r之后,開發(fā)人員最有可能無法表明該值的根本原因就是根本沒有考慮它。 在編寫代碼時(shí),對開發(fā)人員“顯而易見”的是,任何意外情況“都不會發(fā)生”,或者如果確實(shí)發(fā)生了,那么價(jià)值是顯而易見的。 在這些類型的消息(或與此有關(guān)的任何日志消息)中不包括上下文的另一個(gè)可能原因是匆忙或懶惰。 開發(fā)人員可能知道最好提供這些詳細(xì)信息,但不想花時(shí)間去做。 這是后一個(gè)原因,有時(shí)會鼓勵我編寫一個(gè)自定義異常,如上所示。

對開發(fā)人員來說,調(diào)試和維護(hù)生產(chǎn)軟件是寶貴的經(jīng)驗(yàn),因?yàn)樗梢詭椭_發(fā)人員更好地了解他們的行為(或缺乏行為)如何使將來的工作更加困難。 通常,有責(zé)任心的開發(fā)人員可以通過在記錄的消息中提供上下文信息來幫助其他人(可能還有他或她自己),特別是對于警告,錯誤和異常情況。 特別是,增加什么價(jià)值的背景下正在switch時(shí)沒有找到匹配的-ed是很容易做到,可能相當(dāng)多的時(shí)間保存自己,其他開發(fā)人員和客戶的未來。

翻譯自: https://www.javacodegeeks.com/2017/11/log-unexpected-switch-options.html

sap打勾選項(xiàng)記錄

總結(jié)

以上是生活随笔為你收集整理的sap打勾选项记录_记录意外的开关选项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。