经常有这样的情况,一个方法里有很多的代码,不得不通过上下滑动屏幕来阅读代码。这种行数比较大的方法,有如下的缺点
- 由于都是细节,给读者很高层次理解代码带来问题。
- 很难抓住主次。
一个例子:
修改后:@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(); }