孙腾跃技术修炼之第一周(04.06-04.11)心得

1.新项目构建中遇到的Android继承实现问题

需求:让activity共享一部分UI

思路:写一个activity的子类,然后将公共部分的UI在这个子类activity中实现,命名为BaseActivity,最后所有要共享此部分UI的activity都继承这个BaseActivity

BaseActivity使用initView(),setListener(),getData()方法,则需要实现BaseIView接口。

public abstract class BaseActivity extends AppCompatActivity implements BaseIView {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setScreenState();
        if (savedInstanceState != null) {
        } else {
            setContentView(getLatoutId());
            initView();
            setListener();
            getData();
        }
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig){
        super.onConfigurationChanged(newConfig);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }

    /**
     * 目标activity
     *
     * @param cls
     */
    @Override
    public void mStartActivity(Class<?> cls) {
        Intent intent = new Intent(this, cls);
        startActivity(intent);
    }

    /**
     * @param cls    目标activity
     * @param bundle 参数
     */
    @Override
    public void mStartActivity(Class<?> cls, Bundle bundle) {
        Intent intent = new Intent(this, cls);
        intent.putExtras(bundle);
        startActivity(intent);
    }

    @Override
    public Context getMContext() {
        return this;
    }

    /**
     * 设置状态栏
     */
    public void setStatusBar() {

    }

    /**
     * 设置屏幕状态
     */
    public void setScreenState() {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//强制横屏
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
        this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏(AppCompatActivity)
    }

    @Override
    protected void onStart() {
        super.onStart();
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (isNeedCheck) {
            checkPermissions(needPermissions);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onStop() {
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void showLoadDialog(String msg) {
        if (mLoadingDialog == null) {
            mLoadingDialog = LoadingDialog.getInstance(this);
        }
        mLoadingDialog.show();
    }

    @Override
    public void hideLoadDialog() {
        if (mLoadingDialog != null) {
            mLoadingDialog.dismiss();
            mLoadingDialog = null;
        }
    }
}

 2.《程序员修炼之道-从小工到专家》学习心得

这几天读完了这本书的第二章有几点感悟,在此记录。

1) 重复的危害:可靠地开发软件、并让我们的开发更易于理解和维护的唯一途径是遵循DRY原则,DRY就是Don't Repeat Yourself的缩写,我们不要重复自己,不要重复表述项目中的知识,要有大局观,避免反复赘述,而是学会在多个地方表达同一事物,牵一发而动全身,这是一个注重实效的程序员所必备的精神。我认为,程序员之所以存在容易重复自己的问题,是因为他太想偷懒了,比如无耐性的重复和开发者之间的重复,这是单纯的ctrl+c和ctrl+v。你现在也许可以节省几秒钟,但以后却可能损失几小时,欲速则不达,开发者的慵懒是造成诸多问题的关键。

2) 正交性:在计算技术中,正交性用于表达某种不相依赖性或是解耦性,即互不影响的两个事物,他们之间具有正交性。比如我们孺教网的作业系统,他的主题界面的更新换代,不会影响都后台数据库的构建,反过来,后台数据库关系的改变不会影响到UI界面的展示。所以正交的好处是什么呢?那就是提高了生产率同时降低了开发风险。大多数软件研发团队都会遇到成员互相争吵的情况,归根到底是一点小的修改就会引起全局的变动,这就是一个非正交系统所带来的隐患。那么处理好团队的正交性问题,让每个成员都能明确好自己在团队中的责任,那就一定要分好小组并对分组即使进行相应的调整。


这是我的第一篇学习心得博客.                                                    2020.4.9  23:23  星期四 

原文地址:https://www.cnblogs.com/SuNtEnGyUe/p/12666805.html