这里我说了算!

用python抓取“3d”彩票数据,怎么分析你说了算! 快下班了,正好准备去买彩票,就顺手写了2个脚本,一个用来下载最近的彩票数据,一个用来统计彩票数字,分享给大家! 彩票数据获取并写入excel表格 数据来源自己看吧~用外链通不过。。。 所用库:xlwt,requests,lxml 有几点需要注意的: 1、构建列表。因为存入excel文件的时候用的是列表,所以新建一个函数,分别取网页5个数据:时间、期数、开奖数123,然后每一页嵌套... 阅读详情

这里我说了算!

自从9岁那年得到第一台Commodore 64家用电脑起,我就开始编程。然而,当面对如何写出好的代码时,我仍然感觉自己还有很多要学的。

在探索如何提高自己的过程中,我学了很多种语言。大多数是以面向对象为主的(OO)。

然而,让我惊讶的是,在我读过的大多数书本、杂志和网上文章中,有着大量遭透了的被当作面向对象例子的代码。

这些代码中,我看到的最多被违反的原则是“命令,不要去询问(Tell, Don’t Ask)”原则。这个原则讲的是,一个对象应该命令其它对象该做什么,而不是去查询其它对象的状态来决定做什么(查询其它对象的状态来决定做什么也被称作‘功能嫉妒(Feature Envy)’)。在面向对象的编程中,一个对象被定义成由对象状态和操作这个状态的方法组成。

在《Holub on Patterns: Learning Design Patterns By Looking At Code》这本书里,Allen Holub在第一章里有一节的标题是“为什么getter和setter方法有害”。他在JavaWorld上的一篇文章里也谈论了这个问题。对所有的面向对象的程序员来说,这应该是一篇“必读”文章。

我有一些程序员同事,他们在一个对象上第一步声明了属性后,第二步就是添加getter和setter方法。JavaBean规范对于这种文化的推广负于很大的责任。人们认为这是一种能让你写出可复用的模块化组建的好方法,但这已是很多年前的事了,时过境迁。

写带有getter和setter方法的类会导致过程式的代码。通过getter和setter来获取数据进行操作的逻辑最终会遍布整个应用,进而经常导致应用内的重复(这违反了另外一个原则:DRY——不要自我重复(Don’t Repeat Yourself))。这会致使产生很难维护的代码,当你对一个类做任何修改时,都会在整个应用内造成连锁式的牵连。

用这种方式来暴露数据还会妨碍你重构你的类,因为对这样的属性的任何修改都意味着会影响到访问了这个属性的其它类。

违反“命令,不要去询问”原则的另外一个副作用是,你的探询最终变成严重依赖状态信息并带有很多前提条件。这会让人很难理解你究竟询问的是什么。

你很可能会最终违反的第三个原则是,尽少知道(Least Knowledge)原则,也叫做得墨忒耳定律(Law Of Demeter)。这个定律可以总结为下面一句话:

一个类应该只跟它的直接朋友通话,不要跟陌生人说话。

在类里面加入getter方法,你的代码最终会写成这样:

1if (person.getAddress().getCountry() == "Australia") {

这违反了得墨忒耳定律,因为这个调用者跟Person过于亲密。它知道Person里有一个Address,而Address里还有一个country。它实际上应该写成这样:

1if (person.livesIn("Australia")) {

这并不违反得墨忒耳定律,因为这个调用者只跟它的直接朋友Person通话,而且它不知道内部情况。从“命令,不要询问”的视角来看,这也是更好,因为确定这个person是否居住在Australia的逻辑被隐藏到了Person里,如果我们改变Person里存储国家信息的方式,这将不会影响任何依赖这个信息的其它类。

另外一个这样写代码的好处是,它把我们的意图显示的很清楚。这是我会在以后的时间里讨论的另外一个话题。

为了避免违反“命令,不要去询问”原则,有几样事情你要记在心里。

  • 在IDE里敲击快捷生成键前,询问自己’五个为什么’,问问自己为什么一上来就添加getter和setter方法。
  • 不要询问对象的状态。要做什么,告诉它们该怎么做。
  • 操作所属的对象拥有这些操作的数据。

进一步阅读

我的一个朋友是这个思想的大力倡导者,他用East Oriented方式精彩的解释了这个原则。

《Tell Don’t Ask and the effect on testing》,出自Steve Freeman 和 Nat Pryce,他们也是 《Growing Object-Oriented Software》, 《Guided by Tests》 两本书的作者。

[本文英文原文链接:I give the orders around here! ]

从零到一:ArduPilot无人船PID调参实战指南 本文详细介绍了ArduPilot无人船PID调参的实战指南,从基础参数设定到高级调参技术,帮助用户掌握水面环境下的PID控制逻辑。通过案例分析和参数示例,解决无人船在空载、负载变化及不同水域环境中的航行问题,提升无人船的稳定性和精确度。 阅读详情

相关推荐

python知网爬虫论文pdf下载+立即可用(动态爬虫)

python实现动态爬虫知网论文,搜索+自动翻页+下载 收集数据利器

Braylon的博客 5379

我的心态,心情,行动,都是我自己所说了算!

既然我们能改变,既然我们有选择,那为什么我们还是会做出哪些让我们事后懊悔,让自己愧疚,觉得自己没用的所谓“不明智”选择呢?于是,有了我进一步的觉察与蜕变:我的每一步,其实都是我的主动选择。2. 我一直掌握着主动权,我的心态,心情,行动,都是我自己所说了算;我找了一个“我没有时间,我工作忙”的理由,完成自己的逻辑闭环。所以我找了一个“我不善于沟通”的理由,完成自己的逻辑闭环。1. 我不但有选择,我所经历的一切,都已经是我的主动选择;我找了一个“我年龄太大了”的理由,完成自己的逻辑闭环。

shenjian58的博客 754

远心F-theta镜ZEMAX设计

根据给出的F-theta镜的设计指标,对F-theta镜进行了具体的光学设计。从对F-theta镜设计思想的介绍出发,对选取的初始结构进行了优化设计,优化完成后,对所设计的F-theta镜进行了像质评价,通过点列图、场曲与畸变图、相对照度、能量集中度对所设计的F-theta镜进行了分析,最终,对F-theta镜的设计效果进行了验证。

hitliuyi17的博客 9427

这里我说了算!

自从9岁那年得到第一台Commodore 64家用电脑起,我就开始编程。然而,当面对如何写出好的代码时,我仍然感觉自己还有很多要学的。 在探索如何提高自己的过程中,我学了很多种语言。大多数是以面向对象为主的(OO)。 然而,让我惊讶的是,在我读过的大多数书本、杂志和网上文章中,有着大量遭透了的被当作面向对象例子的代码。 这些代码中,我看到的最多被违反的原则是“命令,不要去询问(Tell, D

Rainman的专栏 505

从论文到生产:iSLIP优先级匹配算法在SDN交换机中的20年演进史

本文回顾了iSLIP优先级匹配算法在SDN交换机中的20年演进历程,从斯坦福大学的原始论文到现代芯片实现。通过独特的指针滑动和迭代循环机制,iSLIP算法显著提升了交换机的吞吐量和公平性,解决了传统FIFO调度的队头阻塞问题。文章详细探讨了算法在硬件实现中的工程挑战、开源实践及未来AI时代的智能调度方向。

weixin_29230649的博客 331

DSP28335与Vofa+上位机通信实战:SCIb配置避坑指南(附完整代码)

本文提供DSP28335与Vofa+上位机通信的实战指南,重点解析SCIb模块配置的常见问题与解决方案。针对研旭开发板的硬件连接、波特率精确计算、FIFO高效使用以及FireWater协议封装进行了详细说明,并附有完整代码,帮助开发者快速实现实时数据可视化与波形分析,提升调试效率。

weixin_29172963的博客 150

需求-谁说了算!

很多牛人的大作在说到需求时,大多数的人都会说“需求是在产品构建之前必须要发现的那些东西”。ok,我同意此观点。 那么你呢?和我一样的观点吗?   那么需求谁说了算呢? 客户,购买者,管理者,出钱让我开发软件的人,使用者。。。等等,也许你列出的比我还多。他们说什么我就做什么,客户是上帝,要听客户的话,要站在客户角度想问题,做事情,领导才会中意你。从你的职业生涯来看,是这样的吗

langqiao123的专栏 905

spdk + fio测试nvme 设备的性能

fio的测试对象可以是块设备、文件等,在spdk的使用过程中会unbind默认的nvme driver,所以在系统中是看不到nvme块设备的,在spdk中可以通过fio_plugin的方式,将spdk的用户态driver部分的io功能打包成一个ioengine提供给fio使用,可以综合spdk的高性能和fio提供的复杂场景。更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加。这个jobfile是spdk中提供的例子。领取,关注我持续更新哦!2.7 jobfile的例子。

lingshengxiyou的博客 1088

你是谁?习惯说了算!

对于任何一件事,成功者与失败者的唯一的区别就在于习惯不同!坚持晨练,按时上班,面带微笑,每晚阅读……你的每一个习惯,都在塑造你自己,同时告诉别人你是一个怎样的人。用现在的习惯,客观的认识自己。 1. 习惯反映了你重视什么,忽视什么 看看你做什么事、见什么人总迟到,就知道什么事、什么人对你最重要。 2. 时间都花在了哪儿? 从习惯就...

weixin_30332705的博客 89

C#与天文观测:Celestia模拟星空的奇幻之旅

Celestia就像一艘穿梭在星海中的小飞船,带领我们遨游宇宙。C#则是这艘飞船的智能导航系统,用代码指挥它飞向任何我们向往的星球或星系。首先,下载并安装Celestia,熟悉其基本操作和功能。创建一个星空目标列表,包括不同的恒星、行星和星系。// 示例:定义观察目标列表new SpaceObject("太阳"),new SpaceObject("月球"),new SpaceObject("火星")

java专栏 1456

MC_SetOverride指令详细应用介绍(基恩士PLC)

基恩士KV系列PLC和松下总线绝对值伺服运动控制(详细配置+轴控完整ST源代码)

RXXW_Dor的博客 335

成魔成仙,牛牛自己说了算!

在这里可以看到不同的requestUri获取到的filterChain不同,而在getRequestUri中在normalize函数中处理的有问题,就造成了权限绕过。Shiro的本质就是一个filter过滤器。在扫描过程中,其实还找到多处的文件上传的利用,但奈何是利用date作为路径名称,虽然有修改文件名的功能,但是限制太大。经过代码扫描后,发现shiro的版本是1.4.0,处于权限绕过的版本中,进行尝试利用。找到三个调用点,这里找到调用点之后,直接将传入的内容,进行拼接,然后进行了文件删除。

YakProject的博客 541

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【包你说】红包怎么玩,由你说了算!

自从微信推出的红包功能后,抢红包就成了各个微信群里乐此不疲的活动,微信大大不定时的发布一些新的红包玩法:面对面红包、ar红包、口令红包、黄金红包……层出不穷的玩法让群友们欲罢不能呀,今天小编带你领略新玩法,红包怎么玩,由你说了算!咱先一起打开这款小程序 『包你说』 首先打开界面,输入你的语音口令,微信好友说出你这个口令,才能领取红包。比如说你想要被表白,咱们就输入[我好喜欢你],

Dreawer微信小程序联盟 6073

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Pulsar 直播 :想听什么,您说了算!

????‍♂️集合,只需 2 分钟为了让大家更全面和专业地了解 Pulsar,StreamNative 计划组织免费线上 「Pulsar 直播」!邀请 Pulsar 核心研发团队分享关于...

Apache Pulsar 215

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

发什么内容?你说了算!

码个蛋为了让内容更精彩,特别成立了选文小组。只要你有经常阅读文章的习惯,你就可以参与,我们会将你看到的好文章分享给更多码友!???? 活动规则每周至少精选一篇文章,没有完成者将自动退出活...

陈宇明 138

5G:这次中国说了算!

如今5G(第五代移动通信技术)已经不再是宣传噱头了,在2016年中国国际信息通信展览会——5G创新发展高峰论坛上,中国IMT-2020(5G)推进组宣告5G第一试验阶段顺利完成,这也意味着5G网络已登上快车道向我们驶来。 按照推进组的介绍,该阶段主要完成了5G无线和网络关键技术的性能和功能测试,并充分验证了关键技术在支持Gbps用户体验速率、毫秒级端到端...

weixin_34319640的博客 167

该不该离职?它说了算!

又想薪水高又想轻松,又不想做事又想得到重视,又不愿担责任又想有好的发展……好纠结啊……

安晓辉生涯——聚焦程序员的职业规划与成长 4814

《第三行代码》已完稿,封面由你说了算!

很高兴地告诉大家,《第一行代码 第3版》已经全书完稿了。目前一切进展都比较顺利,稿件已经全部修订完成,正在进行排版,下一步会送至出版社审核并申请版号,如果一切顺利的话,预计会在明年的2~...

郭霖 2423

空间用多少我说了算! C语言动态内存!

空间大小我说了算--动态内存为什么存在内存分配malloc 开辟空间 free 释放空间mallocfreecalloc 开辟空间realloc 管理内存realloc 调整内存的两种情况情况1:原有空间之后有足够大的空间原有空间之后没有足够大的空间realloc 使用代码示例 为什么存在内存分配 我们之前学的内存分配,都是直接开辟内存。但是这样有一个问题:我们开辟的内存是大了还是小了,会不会浪费,会不会不够用。有的程序只有在运行的时候才知道要用多少空间。所以为了解决这样的问题,我们就有了内存的动态开辟。

sjp151的博客 299

开宝箱怎么设计才算好?大脑说了算!

开宝箱怎么设计才算好?大脑说了算! 策划运营 / 2014-10-24 / Brain Intelligence 分享到:1 本文是Brain Intelligence(布雷恩英咨询公司)给游戏葡萄的投稿。布雷恩英从事神经咨询服务,公司所在地为北京。 好的抽奖是该做指针圆盘,还是开宝箱?宝箱上的花纹要霸气侧漏还是萌萌哒?不不不,那都是美工的事。 不管抽

无形的风专栏 2259

你说了算!「 Pulsar 直播 」征选主题啦

各位热爱 Pulsar 的小伙伴们:1 个月前我们发放了「 Pulsar 直播调查问卷 」,收到了很多正向反馈,大家都很期待活动的开始。2020 年即将到来,我们也想为大家送上一份新年大...

Apache Pulsar 240

优快云日报20170403 ——《该不该离职?它说了算!》

我在加油站工作,月薪扣除五险一金2000多,工作时间长,上班48小时休息8小时。今年单位改革把我们都外包出去了,承包人对我各种苛刻要求。有心辞职去干快递,但是要自己交保险,吃饭也得自己花钱,算下来和加油站开的工资差不多,但要是继续干下去每天都要受窝囊气。今年38了,怎么选择?

优快云 官方博客 2万+

今日推荐:【包你说】红包怎么玩,由你说了算!

自从微信推出的红包功能后,抢红包就成了各个微信群里乐此不疲的活动,微信大大不定时的发布一些新的红包玩法:面对面红包、ar红包、口令红包、黄金红包……层出不穷的玩法让群友们欲罢不能呀,今天小编带你领略新玩法,红包怎么玩,由你说了算!咱先一起打开这款小程序 『包你说』首先打开界面,输入你的语音口令,微信好友说出你这个口令,才能领取红包。比如说你想要被表白,咱们就输入[我好喜欢你],选择红包金额,点击生成

APPx应用魔方 7万+

一款牛逼的国产神器,牛不牛逼你说了算 !

现在的远程办公工具,各有特色,以及主打的用户群定位都不一样。不知道大家喜欢哪一款?不过今天,我把我最常用也是最喜欢的一款推荐给大家,这款软件叫向日葵远程控制。向日葵远程控制 是一款经过多年远程控制技术经验积累的高效远程控制软件,是远程控制领域的佼佼者!该软件支持手机、电脑、平板等多种设备之间的相互远程控制,操作简单易上手。只需在公司电脑和个人电脑中同时下载客户端并登录同一个账号,即可轻松实现远程...

程序IT圈 1151

系统功能管理神器,你的电脑由你说了算!

《Windows系统管理神器O&O ShutUp10》摘要 O&O ShutUp10是一款轻量高效的Windows系统功能管理工具,支持Win10/Win11系统。该软件无需安装即可使用,提供一键式开关系统功能服务,简化了复杂的系统设置流程,适合各类用户。它能智能关闭影响性能或隐私的系统功能,并支持将所有设置规则导出,便于在多台设备间快速同步配置。完全免费无广告的特性使其成为优化系统性能、保护隐私的理想选择。用户可通过文末提供的多个网盘链接下载体验。

fengyuruanjian的博客 200
上一篇: android ui界面美化3种
chenvsa
博客等级 码龄18年 17粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值