經常有這樣的情況,一個方法裡有很多的代碼,不得不通過上下滑動螢幕來閱讀代碼。這種行數比較大的方法,有如下的缺點
- 由雩都是細節,給讀者很高層次理解代碼帶來問題。
- 很難抓住主次。
一個例子:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String userSafetylegalUrl = SystemProperties.get(PROPERTY_LSAFETYLEGAL_URL); final Configuration configuration = getResources().getConfiguration(); final String language = configuration.locale.getLanguage(); final String country = configuration.locale.getCountry(); String loc = String.format("locale=%s-%s", language, country); userSafetylegalUrl = String.format("%s&%s", userSafetylegalUrl, loc); mWebView = new WebView(this); // Begin accessing mWebView.getSettings().setJavaScriptEnabled(true); if (savedInstanceState == null) { mWebView.loadUrl(userSafetylegalUrl); } else { mWebView.restoreState(savedInstanceState); } mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // Change from 'Loading...' to the real title mAlert.setTitle(getString(R.string.settings_safetylegal_activity_title)); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { showErrorAndFinish(failingUrl); } }); final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.settings_safetylegal_activity_loading); p.mView = mWebView; p.mForceInverseBackground = true; setupAlert(); }
修改後:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String userSafetylegalUrl = initConfigs(); initWebVoew(savedInstanceState, userSafetylegalUrl); initAlert(); }