非常'肤浅'的理解MVVM
那天领导给了我这么一个需求,就是他会通过接口给我传递一条数据,然后我需要判断这条数据的首字母是不是A,如果是的话,就把这条数据保存下来
很简单的一个需求对吧,直接开干,代码如下

完美的解决这个问题,所以我把这段代码拿去给领导看,领导不满意,说我代码是屎,我很不高兴,但是我也不能发脾气。
所以我去认真思考了一下这段代码,这不挺好的吗,我截取了首字母,然后和A来判断是不是相等。没什么问题呀。
所以我拿着我的代码去找了一名叫菲菲的代码工程师,他让我把代码改成下面这样

我一看,这不一样吗,判断str的首字母是不是A。
菲菲说,你仔细想想,你的代码结果可能没变,代码量也好像没什么变化,但是当你看到两段代码的时候,你脑子里面的想法是不是不一样了?
我恍然大悟(黄色背景的文字)。
菲菲又说,写代码其实就是这样的, 有时候写的代码看上去饶了很大一圈,或者利用了什么框架,代码量可能不减反增,但是你写的代码是给人看的,人是要思考的,
我们应该减少的是思考的过程,这样我们才能保住我们的头发。
所以我就把这个思维放到理解其他项目中去,我想到了WPF的mvvm模式,他不是也是干了这么一件事情吗
以代码为例,一个界面就一个名为tbName的textbox

我想给这个名为tbName的文本框赋值一个名字,叫 吴彦祖
如果不采用mvvm模式,那代码就是这样的 tbName.Text = "吴彦祖";
那可能其他人看到这段代码的想法就是,写代码的人,把一个叫tbName的文本框赋值了吴彦祖;
如果我们采用了mvvm模式,把textbox的Text属性绑定到了Name上面,代码就是 Name = '吴彦祖';
其他人看到代码,他不用打开前端去查看tbName是什么,tbName在什么位置,他就知道这个人干了什么事,他把Name属性赋值了吴彦祖;
然后我把菲菲给我说的话,加上自己的理解,去给领导讲了,领导介绍了一个富婆给我,我现在都不用写代码了...
非常'肤浅'的理解MVVM的更多相关文章
- 理解MVVM在react、vue中的使用
理解MVVM在react.vue中的使用 一:什么是MVC.为什么不用MVC 1:MVC的含义: M(modal):是应用程序中处理数据逻辑的部分. V (view) :是应用程序中数据显示的部分. ...
- 深入理解MVVM模式中Silverlight的Trigger、Action和Behavior及Silverlight的继承机制
接触Silverlight已经有两三个月了,开始一直感觉他和Winform很相似,拖拖控件就行了,所以一直把经历放在了研究后台和服务器交互和性能优化上面,很少去仔细研究Silverlight的页面.前 ...
- UWP开发-重新理解MVVM
MVVM是一个比较热门的开发框架,尽管已经出现很久了,仍然比较受欢迎.MVVM框架包括: M:Model:Model指的是数据模型,例如你要在页面展示联系人信息,那么Model就是联系人的模型,包括联 ...
- 【前端知识体系-JS相关】深入理解MVVM和VUE
1. v-bind和v-model的区别? v-bind用来绑定数据和属性以及表达式,缩写为':' v-model使用在表单中,实现双向数据绑定的,在表单元素外使用不起作用 2. Vue 中三要素的是 ...
- 如何理解MVVM
说一下对MVVM的理解 MVC Model,View,Controller. View是视图,界面,有输入框,有按钮,有列表等. Model是数据源,比如todolist里面等title,list ...
- 怎样理解 MVVM ( Model-View-ViewModel ) ?
MVVM 的 产生 / 实现 / 发展 可以写一篇很长的博客了, 这里仅写一下个人对 MVVM的一些肤浅的认识. 1. 在 没有 MVVM 之前, 前端可以说是 jQuery一把梭 , jQuery ...
- 如何理解MVVM?
随着前端页面越来越复杂,用户对于交互性要求也越来越高,MVVM模型应运而生. MVVM最早由微软提出来,它借鉴了桌面应用程序的MVC思想,在前端页面中,把Model用纯JavaScript对象表示,V ...
- extJs学习基础5 理解mvvm的一个小案例
今天很是幸运,看到了一位大神的博客,学习了不少的东西.太感谢了.(满满的都是爱啊) 建议去学习这个大神的博客,真心不错. 博客地址:http://blog.csdn.net/column/detail ...
- 理解MVVM模式
1.WPF的核心是数据绑定. 2.考虑这样一个场景:界面上有一个TextBox显示Person的年龄,一个Button,点击一次Button,年龄加1. 3.做一个View,上面有TextBox和Bu ...
- 我理解的MVC
前言 前一阶段对MVC模式及其衍生模式做了一番比较深入的研究和实践,这篇文章也算是一个阶段性的回顾和总结. 经典MVC模式 经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的 ...
随机推荐
- Cython二进制逆向系列(三)运算符
Cython二进制逆向系列(三)运算符 在开始前,先给出本文用到的py源代码 def test1(x, y): # 数学运算符 a = x + y b = x - y c = x * y d = x ...
- Linux系统查看CPU使用率、内存使用率、磁盘使用率
一.查看CPU使用率1. top 命令[root@sss ~]# toptop - 16:54:38 up 7 days, 5:13, 3 users, load average: 0.00, ...
- 探秘Transformer系列之(16)--- 资源占用
探秘Transformer系列之(16)--- 资源占用 目录 探秘Transformer系列之(16)--- 资源占用 文章总表 0x00 概述 0x01 背景知识 1.1 数据类型 1.2 进制& ...
- 【Docker】命令行操作
Docker常用命令 帮助命令 docker version docker info docker --help Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker ...
- Linux下安装node及npm
Linux下安装node 1.解压 $ tar zxf node-v8.9.0-linux-x64.tar.gz 2.移动到指定目录 $ mv node-v8.9.0-linux-x64 /usr/l ...
- MCP开发应用,使用python部署sse模式
一.概述 MCP服务端当前支持两种与客户端的数据通信方式:标准输入输出(stdio) 和 基于Http的服务器推送事件(http sse) 1.1 标准输入输出(stdio) 原理: 标准输入输出 ...
- RL · Exploration | 使用时序距离构造 intrinsic reward,鼓励 agent 探索
论文标题:Episodic Novelty Through Temporal Distance. ICLR 2025,8 8 6 5 poster. arxiv:https://arxiv.org/a ...
- 🎀chrome-网页gif截图插件
简介 本文介绍网页中gif截图工具使用,便于日常对网页中动态效果或元素进行截图 软件介绍 Capture to a Gif 是用来录制屏幕并将其保存为 GIF 格式文件的chrome插件工具.它允许用 ...
- Eclipse 安装 阿里P3C编码规范插件
操作:Help -> Install New Software -> add name: p3c location:https://p3c.alibaba.com/plugin/eclip ...
- JVM 的 TLAB(Thread-Local Allocation Buffer)是什么?
JVM 的 TLAB(Thread-Local Allocation Buffer)是什么? TLAB(Thread-Local Allocation Buffer)简介 TLAB(Thread-Lo ...