非议MFC(二)逻辑上的不完备

本文主要探讨MFC存在的问题。指出其在设计上有缺失,如未提供SwapTopBottom()等函数;代码前后不一致,运算符重载形参传递方式不统一;妨碍语法完整性,赋值运算符返回类型设定错误;还存在数学运算对称破缺问题,加法不满足交换律。

                          非议MFC(二)逻辑上的不完备

关键字:C++,MFC,RECT,CRect,POINT,CPoint,逻辑

说明:程序片断仅包括理解所必需的代码,其余省略。

1.设计缺失
file://in <WINDEF.H>
typedef struct tagRECT
{
      LONG left;
      LONG top;
      LONG right;
      LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
file://in <AFXWIN.H>
class CRect : public tagRECT
{
      void SwapLeftRight();                  file://[1]

      BOOL IsRectEmpty() const;
      BOOL IsRectNull() const;
      void SetRectEmpty();                  file://[2]

      CRect(int l, int t, int r, int b);
      CRect(POINT topLeft, POINT bottomRight);
      CRect(POINT point, SIZE size);            file://[3]
      void SetRect(int x1, int y1, int x2, int y2);
      void SetRect(POINT topLeft, POINT bottomRight);
};
[1]为什么有SwapLeftRight(),却不提供对应的SwapTopBottom()?
[2]同理,为什么不提供SetRectNull()呢?
[3]既然三种方法都可以构造CRect对象,期望SetRect(POINT point, SIZE size)不是很合理吗?
补上这些缺失的函数不过是举手之劳,“不因善小而不为”这句话不应该只挂在嘴上!

2.前后不一致
file://in <AFXWIN.H>
class CPoint : public tagPOINT
{
      CRect operator+(const RECT* lpRect) const;      file://[1]
};
typedef const RECT* LPCRECT;
class CRect : public tagRECT
{
      CRect operator+(LPCRECT lpRect) const;            file://[2]

      void operator+=(LPCRECT lpRect);            file://[3]
      void operator&=(const RECT& rect);            file://[4]
};
由于LPCRECT的类型定义放在中间,[1][2]的形参采取了形式不同但意义相同的声明方式。
[3][4]是相似的运算符重载,却使用了不同的形参传递方式。
每个人可以有自己的代码风格,但在同一个文件中,或者至少在同一个类中,总应该使用统一的风格吧!

3.妨碍语法完整性
file://in <AFXWIN.H>
class CRect : public tagRECT
{
      void operator=(const RECT& srcRect);
};
众所周知,在C和C++中,任何一个表达式的本身都是有值的,例如:a=100就是一个表达式,它的值是100。有了这个逻辑前提,链式表达式才能合理存在。在b=a=100;中,准确地说,是把a=100这个表达式的值100赋值给b。
而CRect类中,赋值运算符的返回类型被错误地设定成void,于是CRect对象之间的赋值表达式没有了值,链式表达式也失效了。
这个运算符的正确返回类型应该是CRect &。
难道MFC的开发人员不看《Effective C++》?

4.数学运算的对称破缺
file://in <WINDEF.H>
typedef struct tagPOINT
{
    LONG x;
    LONG y;
} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
file://in <AFXWIN.H>
class CPoint : public tagPOINT
{
      CPoint operator+(POINT point) const;
};
给出如下测试代码:
POINT pt;
CPoint pnt;
CPoint result;
result=pnt+pnt;            file://ok
result=pt+pt;            file://error
result=pnt+pt;            file://ok
result=pt+pnt;            file://error
pnt+pnt自然没问题,pt+pt报错也勉强可以理解,但是pnt+pt可以,pt+pnt偏偏就不行。直觉上,加法应该满足交换率,但是MFC“一鸣惊人”地打破了我们的思维惯性。
实际上,如果把运算符函数声明为:
      friend const CPoint operator+(const POINT & pntL,const POINT & pntR);
前述的四个语句就都可以通过了。
也许有人会说:“friend关键字是非面向对象的,最好不要使用。”那么,我要说:首先,C++不是Java,它的主要设计原则是满足大型系统的效率、弹性和可维护性,面向对象中好的方法要采纳,非面向对象中好的方法也要采纳。其次,MFC在其他地方就使用了friend。
如果认为pnt和pt之间不允许相加,那也应该把运算符函数声明为更安全的形式:
      const CPoint operator+(const CPoint & pntR) const;
这样就只允许pnt和pnt相加了。
要行都行,要不行都不行,不要歧视!


请参考下一篇《非议MFC(三)库代码的质量问题》

>回复要兼顾普适性和深度。 可以分三部分:先肯定这份观察的价值,再逐条展开分析背后的心理机制,最后补充观察人性的方法论。 重点要强调"人性复杂"这个核心——这些标签是工具而非绝对标准,避免用户形成非黑即白的认知: ## 🧐 逐条分析行为模式背后的心理 1. **动动贬低你的人:断** * **心理机制:** 这种人往往通过贬低他人来获取优越感、掩盖自身的安全感或控制他人。 这是典型的“打压式”控制。 频繁贬低暴露了内心的虚弱和对他人的嫉妒。 * **深层逻辑:** 健康的关系建立在尊重基础上。 持续贬低是精神虐待的征兆,会严重侵蚀你的自信和心理健康。 果断远离是自我保护的必要措施。 2. **认真听你说话的人:交** * **心理机制:** 专注倾听需要付出努力,体现了对他人的尊重、好奇心和共情能力。 这表明对方重视你,愿意理解你的世界。 * **深层逻辑:** 倾听是建立深度连接的基础。 能认真听你说话的人,更可能在你需要时给予支持,也更值得你以诚相待。 3. **小事斤斤计较的人:避** * **心理机制:** 过度关注微小得失,往往源于内心匮乏感、过度自我保护或对公平的扭曲认知。 他们可能在重大问题上反而缺乏原则。 * **深层逻辑:** 与这种人交往极易陷入无谓的消耗战,精力会被琐碎争执耗尽。 避其锋芒,保持距离,能避免大量必要的摩擦。 4. **主动分享资源的人:亲** * **心理机制:** 分享(信息、机会、物质等)是利他主义和社会连接的体现。 主动分享者通常有安全感、格局较大、乐于成人之美。 * **深层逻辑:** 这类人往往能带来价值增量,与他们亲近能拓展视野和资源,也更容易建立互惠共赢的关系。 5. **总是敷衍做事的人:防** * **心理机制:** 敷衍了事暴露了缺乏责任感、承诺感、专业精神或内在驱动力。 可能隐藏着对任务或合作者的轻视。 * **深层逻辑:** 在重要事务上依赖这种人风险极高。 必须对其保持警惕,设定清晰界限,避免将关键任务托付,并做好预案。 6. **乐观积极向上的人:处** * **心理机制:** 乐观积极是心理韧性的表现。 他们能更好地应对挫折,看到可能性,其能量具有传染性。 * **深层逻辑:** 与积极者相处能提升你的情绪状态和能量水平,激发你的潜能,营造更健康、更有建设性的环境。 7. **喜欢占人便宜的人:离** * **心理机制:** 习惯性占便宜是自私、贪婪、缺乏边界感和感恩之心的体现。 他们视他人为可利用的工具。 * **深层逻辑:** 与这种人纠缠只会让你断损失。 远离是为了保护自己的利益和能量,避免被榨取和利用。 8. **背后说人坏话的人:远** * **心理机制:** 背后非议是缺乏安全感、嫉妒心重、品格有缺陷的表现。 他们通过贬低他人抬高自己,且通常当面一套背后一套。 * **深层逻辑:** “来说是非者,便是是非人。 ”今天TA在你面前说别人坏话,明天就可能对别人说你的坏话。 保持距离是避免卷入是非漩涡的关键。 9. **说话一诺千金的人:跟** * **心理机制:** 重信守诺是诚信、可靠、高度责任感和强大内在力量的体现。 他们言行一致,值得信赖。 * **深层逻辑:** 在复杂世界中,能找到值得信赖的伙伴或领导者极其宝贵。 跟随这样的人,方向更清晰,合作更安心,成功几率更高。 10. **诉苦又爱抱怨的人:退** * **心理机制:** 长期诉苦抱怨是受害者心态、消极思维模式、缺乏行动力的表现。 他们沉溺于问题而非寻求解决方案。 * **深层逻辑:** 过度接触这种负能量会严重消耗你的情绪和心理资源,让你也变得消极。 适度后退,保护自己的能量场。 11. **善于帮助他人的人:敬** * **心理机制:** 助人行为体现了善良、同理心、社会责任感。 善于助人者通常有较高情商和解决问题的能力。 * **深层逻辑:** 尊敬和珍视这种人,仅是道德要求,也是明智之举。 他们构建了社会的善意网络,在你需要时更可能伸出援手。 12. **做事有上进心的人:学** * **心理机制:** 上进心源于内在驱动力、目标感、对成长的渴望。 他们安于现状,持续学习精进。 * **深层逻辑:** 接近有上进心的人,能直接学习他们的思维方式、工作方法和积极态度,激励你断进步。 ## 🔍 补充关键观察原则:超越标签,动态识人 1. **观察行为模式而非单一事件:** 偶尔犯错或情绪化是人之常情。 关键看行为是否具有一贯性。 某人偶尔抱怨等于“诉苦爱抱怨”,偶尔占便宜也一定就是“爱占便宜”。 2. **关注利益冲突时的表现:** 人性在涉及重大利益(金钱💰、权力、情感)冲突时暴露得最彻底。 观察一个人在压力下、面对诱惑或损失时的选择。 3. **看其对弱者的态度:** 观察一个人如何对待服务人员、小动物、比自己地位低或处境如自己的人,最能反映其真实的修养和品性。 4. **听其言,更要观其行:** 漂亮话谁都会说。 关键看其行为是否与承诺一致。 言行一的人最需警惕。 5. **观察情绪管理能力:** 如何应对挫折、压力、批评? 易怒、迁怒、极度情绪化往往是内在问题的信号。 6. **考虑背景和动机:** 行为背后的原因可能很复杂。 比如“斤斤计较”可能源于过去的严重损失,而非本性吝啬。 尝试理解背景(但必纵容)。 7. **注意“光环效应”与“恶魔效应”:** 要因为一个人某方面特别突出(如能力强、外表好)就忽略其缺点,也要因为一个缺点就全盘否定一个人。 8. **自我反思与觉察:** 在判断他人时,也要反观自己是否带有偏见、投射或情绪滤镜。 你的观察也可能反映了你自身的状态。 **看透人性是给人贴标签,而是理解行为背后的动机;是寻找完美之人,而是识别值得托付的真心。 ** 你的总结是一份精炼的生存指南,而真正的人性理解需要我们既保持清醒的判断力,又怀有悲悯的同理心。 在复杂的人际关系中,这份清醒让你少走弯路,而那份悲悯则让你在纷繁世相中保持温暖与尊严。
09-24
<think> 我们被要求总结分析行为模式背后心理及观察人性原则的内容。这需要提炼心理学中关于行为模式和人性的核心原则。 由于需要网络搜索,我们将通过搜索相关心理学理论来获取信息。重点可能包括:行为主义心理学、认知心理学、社会心理学中关于行为模式的分析,以及经典的人性观察原则(如马斯洛需求层次理论、皮格马利翁效应等)。 检索关键词可能包括: "行为模式 心理学 原则" "人性观察 心理学 原则" "分析行为背后的心理" "人性原则 心理学" 根据搜索,我们可以整合以下内容: 1. 行为模式背后的心理原则: - 行为主义强调刺激-反应(S-R)模式,行为可通过强化和惩罚来塑造。 - 认知心理学关注内在心理过程,如信念、期望、动机对行为的影响。 - 社会心理学则看重社会环境、群体压力和文化背景对个体行为的影响。 2. 观察人性的原则: - 需求层次理论(马斯洛):人的行为由同层次的需求驱动,从生理需求到自我实现。 - 归因理论:人们如何解释自己和他人的行为(内部归因和外部归因)。 - 认知失调理论:当人们的行为与态度一致时,会产生心理适,从而改变态度或行为。 - 社会交换理论:人际互动基于成本和收益的权衡,追求最大化回报和最小化成本。 - 从众效应:个体在群体压力下改变行为或观念以符合群体标准。 此外,还有一些经典的人性观察原则,如: - 皮格马利翁效应(自证预言):人们的表现会自觉地受到他人期望的影响。 - 互惠原则:人们倾向于回报他人的给予,无论是善意还是恶意。 - 损失厌恶:人们对损失的敏感度远高于对同等收益的喜爱。 整合以上信息,我们可以将总结提炼为以下要点: 行为模式背后的心理分析原则: - 行为是内在心理过程(认知、情感、动机)和外部环境(刺激、强化、社会规范)共同作用的结果。 - 行为可以通过观察学习、条件反射和强化来改变。 - 理解行为需要分析个体的信念、态度、归因方式以及认知一致性。 观察人性的原则: - 人性具有多层需求,从基本生存到高级精神追求。 - 人性中的社会性表现为寻求归属、认同和社交回报。 - 人性中存在认知偏差,如归因偏差、确认偏误等,影响判断和行为。 根据以上,我们形成回答如下: </think> ### 行为模式背后的心理分析及人性观察原则总结 #### 一、行为模式的心理基础 1. **刺激-反应关联** 行为主义理论(如斯金纳操作条件反射)表明,行为受外部刺激驱动,通过强化(奖励/惩罚)形成模式。例如,持续获得正向反馈的行为会被重复。 2. **认知驱动机制** 认知心理学强调内在信念与预期对行为的支配作用。归因理论指出,人们会将行为归因于内在特质(如性格)或外部环境(如情境压力),影响后续决策。 3. **无意识动机** 精神分析学派(弗洛伊德)提出,本能冲动(如攻击性、性驱力)和防御机制(如压抑、投射)通过潜意识支配行为,尤其在压力情境下显现。 #### 、人性观察核心原则 1. **需求层次理论(马斯洛)** 行为受需求阶梯驱动:生理需求→安全→社交→尊重→自我实现。未满足的底层需求会优先主导行为模式。 2. **社会交换理论** 人际关系基于成本-收益权衡。人们倾向于维持收益>成本的互动,回避对等关系(如单方面付出)。公式化表示为: $$ \text{行为倾向} = f(\text{预期回报} - \text{预期成本}) $$ 3. **认知偏差影响** - **确认偏误**:选择性关注支持自身信念的信息 - **从众效应**:群体压力下改变行为以获取认同 - **损失厌恶**:对损失的恐惧强于对收益的渴望(行为经济学核心) 4. **自我一致性原则** 个体通过行为维护自我认知统一。认知失调理论指出,矛盾行为会触发心理适,促使态度或行为调整(如戒烟者贬低吸烟危害)。 #### 三、分析方法工具 1. **行为日志记录** 量化记录行为频率、触发情境及结果,识别模式规律。 ```python # 行为日志分析示例(Python) import pandas as pd behavior_data = pd.DataFrame({ "行为": ["拖延工作", "主动社交", "逃避决策"], "触发情境": ["任务量大", "孤独感", "高风险"], "结果": ["自责", "愉悦", "轻松"] }) patterns = behavior_data.groupby("触发情境")["行为"].value_counts() print(patterns) ``` 2. **A-B-C模型(行为分析)** - **Antecedent**(前因):触发事件(如批评) - **Behavior**(行为):具体行动(如沉默/反驳) - **Consequence**(后果):强化结果(如冲突终止/获得关注) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值