『 间接方法 』

铁人赛第四天!简单整理下昨日分享的输入方法有两种:

直接输入:直接把值本身当成输入。

间接输入:透过多种输入来传递消息,取得回传值,而回传值内容才是我们要的。

延续昨日的主题,
我整理了两点 『 优雅的 Ruby 』里比较观念上的想法进行提出分享。

方法来自外部的影响:(举例来说)

ENV, 是 Ruby 中的环境变数 。
举例来说,写一个方法:

# =-=-=-=-=-=-=-=-=-=-=-=-=-=
# 1-6
def format_time
  format = ENV.fetch('TIME_FORMAT'){ '%Q%r' }
  Time.now.strftime(format)
end

format_time # "2021-09-09T01:33:23 AM"
# =-=-=-=-=-=-=-=-=-=-=-=-=-=
# 8-9
ENV['TIME_FORMAT'] = '%FT%T%:z'
format_time # "2021-09-09T01:33:23 - 04:00"

这里 1-6行里的 TIME_FORMAT 本身就是应用在每个记录行的时间戳格式。
我们把它当成 常数 输入於格式方法中,再输出当前时间。
这是属於一种 『 外部的输入 』。
然而,转到第 8-9 行,
原本应 ENV 格式化输出的,也因为受到外部环境变数影响( TIME_FORMAT )成了间接输入。

因此当程序码的关联性程序码关联性的互动越多,一但环境改变,方法也会跟着改变,
因此这不一定是好事。

WOWOWO!

如果你知道 最少知识原则(LKP)(迪米特法则)

间接输入的优化方式,在这法则上的应用的确是不错的解法。

这比喻一个对象应当对其他对象尽可能地少了解,并且不和陌生人说话。
不要以为它孤僻,

就拿正在进行的专案开发来说,
在功能开发的分配内容里,越明确且关联条件的重复率越低,效率是越高。
因为同时你也创造了在第三人快速取用你的开发功能时,能确保一目了然且无需交谈,自然也省去了很多交流时间。

此外,在 Ruby 世界中这第三人的动作,也能模拟成是『封装』。
(而所谓封装的定义就留给大家查询吧~毕竟我们把重心放在方法上。)

连续两天的收集输入为基础概念分享後,
今天暂以短篇分享做为『 收集收入的方法-- 间接输入 』来结尾吧。
明天将开始正式进入『 收集收入 』的应用练习题!
好好的摩拳擦掌!一起朝资优生笔记!
关关难!关关过!


注:

(%Q %r ,是ruby中一种转译符号的用法,也有更精简的缩写概念。
欲深入了解~可参考手册API。)

搜寻: 迪米特法则(Law of Demeter, LoD)


<<:  [Day7] 学 Bootstrap 是为了走更长远的路 ~ Grid 篇 (2)

>>:  视觉设计(2)

Day 19:AWS 是什麽?30天从动漫/影视作品看AWS服务应用 -《尼尔:自动人形》

今年春天重版出来的《尼尔:人工生命 ver.1.22474487139...》第二代《尼尔:自动人形...

第 12 天 小有成果保持练习( leetcode 043 )

https://leetcode.com/problems/multiply-strings/ M...

Day20 探讨setting(2)

昨天介绍到SECRET_KEY,不晓得前一天的东西大家有没有完全了解了呢! 那今天我们再来接着继续介...

Day42. 范例:仿真Git (备忘录模式)

本文同步更新於blog 情境:让我们利用备忘录模式,实作一个仿真Git 首先定义Commit &...

Day9 职训(机器学习与资料分析工程师培训班): python、 php结合highchart

上午: Python程序设计 老师此次课程教学for回圈, List comprehension, ...