作者 | 小傅哥

来源 | bugstack虫洞栈

前言

在编程的路上你是否想过,用汉字写一写代码?

最近有初学编程的小伙伴问小傅哥,汉字可以写代码吗。自己英文不好,要是汉字可以写代码就好了。难道你要的是易语言?其实并不是,小伙伴也是学习 Java 的初学者,刚刚学习到 Spring 看着一片没有注释的代码实在不好理解,要是都是汉字写的,那不和读作文一样了吗!

说道注释,我想到大部分程序员讨厌的两件事;

  1. 不喜欢写注释

  2. 不喜欢别人不写注释

其实对于学习编程来说,初学时写写案例,完成简单的功能,反复练习夯实基础。数学和英文都还并不是你的绊脚石,因为你不需要做复杂的逻辑处理,比如算法。也不需要查阅大量的资料,比如原版的英文资料以及国内没有翻译的技术书籍等。所以这个时候对你来说,只是需要不断的学,不断的写。并逐步强加自己的数学和英文能力。

回到我们的说的,既然你问汉字可以写代码吗。其实在 java 里,原则上你可以写汉字的类、属性、方法,JVM虚拟机也是可以通过编译执行的。只是这样的代码并不能很好的维护,甚至说乱码了也很麻烦。再者,有人写方言怎么办!

好!那么我们接下来就使用汉字的方式来编写一段关于 SpringAop 的案例!

开发环境

  1. JDK 1.8.0

  2. Spring 4.3.24.RELEASE

  3. 本篇涉及的源码下载,可以关注公众号:bugstack虫洞栈 获取,并且还可以获取更多原创案例。

技术实现

为了这个案例更加真实,我们模拟电影清朝韦小宝时期,太监入宫的过程。说白了也就是 Spring 的 AOP 面向切面,切的编程。

在做案例之前,我们先了解一下 AOP 的基本概念;

  1. @Aspect,定义切面的注解

  2. @Pointcut,切入点,一般会在方法上设定通配符表达式

  3. @Around,环绕,也就是你原本的方法会在这里处理

  4. @Before,前置处理

  5. @After,后置处理

1. 定义切面

紫禁城.内务府.敬事房.膑.太监膑.净身监管.java

@Aspect
@Componentpublic class 净身监管 {@Pointcut("execution(public * 紫禁城.内务府.敬事房.利器库..*.军刺切(..))")    public void 监管员(){}@Before("监管员()")    public void 敬事前(){        System.out.println("敬事前:---------准备下刀... ...");    }@After("监管员()")    public void 敬事后(){        System.out.println("敬事后:---------切面完成... ...");    }@Around("监管员()")    public Object aroundMethod(ProceedingJoinPoint pjp) throws Throwable {System.out.println("待切身份:"+pjp.getArgs()[0]);        System.out.println("执行工具:"+pjp.getSignature().getName());//获得传递对象,并做处理        太监膑 太监 = (太监膑) pjp.getArgs()[0];        SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd");        太监.set敬事日期(timeFormat.format(new Date()));//此处可以传递更改后的参数        Object obj = pjp.proceed(new Object[]{太监});return obj;}
}
  • @Aspect,定义切面类,用于处理程序中的切面编程操作。

  • @Pointcut("execution(public * 紫禁城.内务府.敬事房.利器库..*.军刺切(..))"),定义切点处,对那些方法进行执行切面操作。除了这样的操作外,还可以定义成自定义注解。那么后续只要把某个你需要的方法上面添加这样的自定义注解,就可以被 AOP 拦截。

  • @Before("监管员()")、@After("监管员()"),记录切面执行前后的记录。

  • @Around("监管员()"),用于环绕方法增强,可以这里去处理方法中的一些属性信息,比如添加给某个字段添加时间。太监.set敬事日期(timeFormat.format(new Date()));

2. 设置切面可执行方法

紫禁城.内务府.敬事房.利器库.切除器具.java

@Component("切除")
public class 切除器具 {public 太监膑 军刺切(太监膑 太监){        太监.set性别(宦官.太监.name());        System.out.println("... 啊 ... ...老子被切面了!"+太监.get姓名());        return 太监;    }
}
  • 这里类的方法就是上面定义的切点,Pointcut,也就是会被切面处理的方法。

3. 执行切面操作类

紫禁城.内务府.敬事房.执刀人.张三丰执刀.java

public class 张三丰执刀 {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("皇太极.xml");太监刑 太监行刑 = ctx.getBean("太监刑",太监刑.class);太监膑 太监 = new 太监膑();        太监.set姓名("小德张");        太监.set年龄("9");        太监.set性别(宦官.男.name());太监 = 太监行刑.执行切除(太监);System.out.println("\r\n切除状态:"+太监);    }
}
  • 首先这里定义了获取 Spring 注解的 Application,用于我们获取 Bean 。

  • 接下来定义一个对象类,主要传递具体参数信息交给执行切面的方法,进行操作。

  • 最后输出结果信息,也就是我们可以看到具体被切面操作的方法。

测试结果

1. 执行内容

启动方法;紫禁城.内务府.敬事房.执刀人.张三丰执刀.java

待切身份:太监膑 [姓名=小德张, 年龄=9, 性别=男, 敬事日期=]
执行工具:军刺切
敬事前:---------准备下刀... ......啊 ... ...老子被切面了!小德张
敬事后:---------切面完成... ...切除状态:太监膑 [姓名=小德张, 年龄=9, 性别=太监, 敬事日期=2020-05-05]Process finished with exit code 0

2. 效果图

总结

  • 汉字编程,好奇可以试试,但别真的用到项目里。本文也只是通过这样的例子,向你展示学习过程的乐趣,建立一些学习过程的好感。

  • 最近加了很多刚入门学习编程的小伙伴,有很多小问号。比如;

切面运行效果图

我是非常建议先跑起来,多写代码后再慢慢的去探究原理!

最近听到一首诗,不错;廿四桥边廿四风,凭栏犹忆旧江东。夕阳返照桃花渡,柳絮飞来片片红。,白色的柳絮在夕阳桃花的映衬下就是成了片片红。只要你敢学识渊博,就敢让你拥有翻江倒海之力。

原文链接:

https://blog.csdn.net/generalfu/article/details/105931392

更多精彩推荐
☞强烈推荐 16 款 IDEA 插件,让你的开发速度飞起来 | 原力计划
☞Go 远超 Python,机器学习人才极度稀缺,全球 16,655 位程序员告诉你这些真相!
☞你现在从事的程序员还有多久会消失?牛津大学研究员帮你算了算
☞一次对语音技术的彻底批判
☞后端程序员必备:书写高质量SQL的30条建议
☞到底是哪些人在玩链游?| 《区块链游戏玩家研究报告》
你点的每个“在看”,我都认真当成了喜欢

汉字不能编程?别闹了,只是看着有点豪横,容易被开除!| 原力计划相关推荐

  1. 外部依赖项很多未定义标识符_从日本编程书籍《我的第一本编程书》中译版看中文例程如何扬长避短——标识符(一)

    日本作者平山尚在前言归结了本书的三点独特之处: 从始至终只编写一个程序(俄罗斯方块游戏) 使用专门的工具 绝对面向首次接触程序的人群 第一点,优势是一个项目主体贯穿全书,但同时很考验编排顺序,以及技术 ...

  2. 汉字不能编程?别闹了,只是看着有点豪横!容易被开除!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 文章目录 一.前言 二.开发环境 三.技术实现 1. 定义切面 2. 设置切面可执行方法 3. ...

  3. python编程入门教学电子书-Python编程入门电子书教程,看这几个就够了

    这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细写某个知识点,毕竟编程的东西很多都是靠自学,靠自己的,只要大家足 ...

  4. python 编程入门-Python编程入门电子书教程,看这几个就够了

    这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细写某个知识点,毕竟编程的东西很多都是靠自学,靠自己的,只要大家足 ...

  5. 你以为文言编程只是闹着玩?三个月后,人家IDE、教程、包管理器都有了

    . 参与:思,Jamin 用文言文写的官方编程教程<文言陰符>,类似 pip 那样的包管理工具「文淵閣」,还有文言编程开源 IDE「文言齋」,文言编程语言已经这么成熟了? 机器之心曾介绍过 ...

  6. python编程入门-Python编程入门电子书教程,看这几个就够了

    这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细写某个知识点,毕竟编程的东西很多都是靠自学,靠自己的,只要大家足 ...

  7. C语言编程核心要点,男人看了沉默,女人看了流泪

    引言 笔者有十余年的C++开发经验,相比而言,我的C经验只有一两年,C比较简单,简单到<The C Programming Language>(C程序设计语言)只有区区的200多页,相比上 ...

  8. 编程中的代码能看懂。。但是让自己写却写不出来。应该怎么办? 要有效果的方法...

    别人写的代码看起来容易,自己写未必写得好 古人云说起来容易,做起来难.就像我们看小说一样,我们看完小说都看得懂,里面的人物事件都搞得清清楚楚,可这不代表我们能写得出来.对于我们这些码农来说,有些代码是 ...

  9. 编程猫python讲师面试_【编程猫工资|编程猫待遇怎么样】-看准网

    985师范本加硕,想要从事k12教育,坚挺到最后一轮但是未通过的小姐姐掩面飘过,来谈谈我的面试感受吧.个人觉得猫厂管培生的面试整体流程安排挺合理的,有感觉确实是在用心的挑选人才,然后所有的面试官都很n ...

最新文章

  1. JavaScript:对Object对象的一些常用操作总结
  2. python读取数据的函数详解_你了解文件缓存机制吗?磁盘文件如何读写?Python中open函数详解...
  3. linux shell ascii 字符 转换
  4. 【转】gdb调试多进程程序
  5. 推荐系统里,可以用蒸馏吗?
  6. ucOS_II移植:Stm32启动代码分析
  7. nyist 17 -----记忆式搜索------Accept
  8. JVM垃圾回收算法标记清除和复制算法
  9. Keras深度学习实战(4)——深度学习中常用激活函数和损失函数详解
  10. ORACLE ebs 11.5.10 for linux 安装心得
  11. Linux C++ UDP Socket(超详细)
  12. 一款简单实用的iOS分享框架(支持三方登陆)
  13. 解决Nvivo自动编码问题,nvivo自动编码语言包
  14. 综合评价的基本理论和数据预处理
  15. 计算机网络(6)体系结构:计算机网络协议、接口、服务的概念
  16. 统计学方差,中位数,方差,标准差,协方差等的计算
  17. 电感式DC/DC 升压原理
  18. mysql以blob存储图片文件的存储和读取问题解决
  19. uniapp给webview进行传参。
  20. 《超级符号原理》—超级符号

热门文章

  1. drawOval(int x,int y,int width,int height)函数
  2. 鼠绘漫画 for wp8.1
  3. Exynos4412开发板更换开机logo图片
  4. Python的实例方法,类方法,静态方法之间的区别及调用关系
  5. 关于SubSonic3.0生成的表名自动加复数(s)的“用户代码未处理SqlException,对象名'xxxs'无效”异常处理...
  6. HTML5 动态统计表
  7. SQL Server插入geography、geometry和c_hierarchyid类型数据
  8. u盘安装linux系统自动关机,将u盘拔出后电脑自动关机怎么解决【解决方法】
  9. 【前端】【cornerstone】【未完善】cornerstone重新加载图像大小问题——拒绝花里胡哨
  10. 多层神经网络中的正则化代价函数解析