一、c++11

lambda

/*
* File: main.cpp
* Author: liangjie
*
* Created on 2013年11月23日, 下午12:02
*/ #include <cstdlib>
#include <iostream> using namespace std; /*
*
*/
int main(int argc, char** argv) {
string aa = "Hello World!";
int b = , c = ;
for_each(aa.begin(), aa.end(), [&b, &c](char a){if (a == 'l') {b++;} else if (a == 'e'){c++;};});
cout<< "Number of e: " << c<<endl;
cout<<"Number of l: "<<b<<endl;
return ;
}

lambda,看了一下就搞懂了。

smart_ptr

/*
* File: main.cpp
* Author: liangjie
*
* Created on 2013年11月23日, 下午12:16
*/ #include <cstdlib>
#include <iostream>
#include <memory> using namespace std; /*
*
*/ void move_print(int n){
unique_ptr<string> aa(new string("Hello World!"));
for (int i=aa.length() - n; i<aa.length();i++){
cout<<aa[i];
}
for (int i=;i<aa.length()-n;i++){
cout<<aa[i];
}
} int main(int argc, char** argv) {
int n = ;
move_print(n);
return ;
}

smart_prt,自动清理申请的空间。概念不错。

二、围棋程序

01年就有C#了?搜了一下居然是00年发布的。我第一次听说c#大概是11年吧。原来也不是一个很新的语言了。

playPrev函数

public void playPrev(GoMove gm)
{
Point thepoint = gm.Point;
Grid[thepoint.X,thepoint.Y].removeStone();
if (gm.DeadGroup)
{
int thecount = gm.DeadGroup.Count;
thecount = gm.DeadGroup.Capacity;
System.Collections.IEnumerator theenum = gm.DeadGroup.GetEnumerator();
while (theenum.MoveNext())
{
thepoint = (Point)theenum.Current;
Grid[thepoint.X,thepoint.Y].setStone(gm.DeadGroupColor);
}
}
m_gmLastMove = gameTree.peekPrev();
if (m_gmLastMove)
{
repaintOneSpotNow(m_gmLastMove.Point);
setLabelsOnBoard(m_gmLastMove);
setMarksOnBoard(m_gmLastMove);
}
optRepaint();
m_colorToPlay = nextTurn(m_colorToPlay);
textBox1.Clear();
if (m_gmLastMove)
textBox1.AppendText(m_gmLastMove.Comment);
}

编码风格:

个人很少用c系的语言,所以说不上什么好坏。不过单从代码角度来说的话,变量名还可以,能传递一部分的意思。不过注释感觉有些过多,很多时候变量名以及代码结构已经足以表达清楚意思了。在我的观点里,一个函数最多只需要一行注释,说明函数的用途及用法。至于函数内部的实现应该靠代码就足以表述清楚——如果表述不清楚,那就是函数写的有问题。

一大串if else我觉得switch比较好。当然我不是用c的,貌似switch只能处理字符?那还不如叫switch_only_for_char。

程序架构:

1500多行,实在没有太多耐心来看。想必其中大部分代码都是画界面的。

MVC的话,感觉并没有很明确的体现出来。各种函数的调用好像并没有什么明显的规则,比如nextTurn()这种,如果按照MVC的话,应该是不能直接调用的。

不过话说话来,MVC还是用在大型程序上比较好,这种小程序完全没必要。大炮大蚊子明显没有用手打有效。

错误处理:

trycatch好像有点太笼统了。如果能细致一点指出具体的错误就更好了。

特殊情况最好归到trycatch里,统一管理。写到外面容易被当做正常情况来看待。

注释:

加到代码里了,太长就不贴到这了。

[课程相关]homework-06的更多相关文章

  1. 【学习笔记】B站-2019-NLP(自然语言处理)之 BERT 课程 -- 相关课程笔记

    BERT 课程笔记 1. 传统方案遇到的问题 BERT的核心在于Transformer,Transformer就类似seq2seq网络输入输出之间的网络结构. 传统的RNN网络:最大的问题,因为不能并 ...

  2. Linux及安全课程——相关链接总结

    附录:学习笔记链接总结 MOOC课程学习笔记与实验: 第一周:计算机是如何工作的 第二周:操作系统是怎么工作的 -- 一个简单的时间片轮转多道程序内核代码及分析 第三周:构造一个简单的Linux系统M ...

  3. [课程相关]homework-04

    零.准备工作 这次的作业仍然是结对编程,我们队伍的成员为:梁杰.夏天晗.谢祖三.上次我们是选择了一个时间大家聚在一起进行编程,效果不错,所以这次我们还是决定采用这种方式.由于大家平时比较忙,这周六日我 ...

  4. [课程相关]homework-02

    一.如何组织代码 因为这个代码比较简单,用函数就足够了,个人觉得没必要用类,杀鸡不必用牛刀. 代码有点长,主要是加了很多判断参数的部分. 提取了一个公共的递归函数. 用了不少全局变量,可能当做参数传入 ...

  5. 潭州课堂25班:Ph201805201 django 项目 第四十二课 后台 课程相关,用户组管理 (课堂笔记)

    在线课程: 当点击进入页面时,显示所有课程 def get(self, request): courses = Course.objects.select_related('category', 't ...

  6. java面试(Web相关)06

    1.JSP 和 servlet 有什么区别? JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式.servlet 和 JSP 最主要的不同点在于,servlet 的应用逻辑 ...

  7. [课程相关]附加题——stack的理解

    一.stack的三种解释 stack有三种解释,我个人理解如下. 1.用户自定义的stack 用户自定义的stack就是一般意义上的后进先出队列,从名字上就能理解了,stack由下向上增长,有一个顶指 ...

  8. [课程相关]homework-09

    零.前言 这次的作业比较特殊,有两种做法.由于我对网页很熟悉,所以选择网页. 细节不赘述,下面写一下这次作业的几个亮点. 一.亮点 最大的亮点就是这个页面是纯客户端的,没有服务端.也就是说所有功能都是 ...

  9. homework -06 围棋

    playPrev功能的实现 public void playPrev(ref GoMove gm) { Point p = gm.Point; m_colorToPlay = gm.Color; cl ...

随机推荐

  1. Angular 中得 scope 作用域梳理

    $scope 的使用贯穿整个 Angular App 应用,它与数据模型相关联,同时也是表达式执行的上下文.有了 $scope 就在视图和控制器之间建立了一个通道,基于作用域视图在修改数据时会立刻更新 ...

  2. uestc oj 1217 The Battle of Chibi (dp + 离散化 + 树状数组)

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1217 给你一个长为n的数组,问你有多少个长度严格为m的上升子序列. dp[i][j]表示以a[i]结尾长为j ...

  3. web.xml 详解

    http://xmlns.jcp.org/xml/ns/javaee 重定向为 http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javae ...

  4. Jquery 获取文件内容

    $('.ke-edit-iframe').contents().find('body').text() <iframe class="ke-edit-iframe" hide ...

  5. 在Windows2012下安装SQL Server 2005无法启动服务的解决办法

    下面是我亲自经历过的总结. 因为尝鲜安装了Windows2012,的确很不错,唯一的遗憾就是不支持Sql Server 2005的安装.找了很多办法,基本上都有缺陷.现在终于找到一种完全正常没有缺陷的 ...

  6. bootStrap modal无法滚动处理

    bug:在大显示器上,模态框无法滚动,改变浏览器窗口大小,模态框可以滚动. 处理:模态框显示后,执行resize.或者直接调用handleUpdate 'shown.bs.modal #orderDe ...

  7. OpenStack tokens id获取测试

     

  8. jQuery实现的瀑布流效果, 向下滚动即时加载内容

    下拉滚动条或鼠标滚轮滚动到页面底部时, 动态即时加载新内容. 后台用 json 传输数据, 示例程序中只写了示例数组.数据也只设置了两个属性, 需根据实际应用改写.   页面用了 ul li 做为容器 ...

  9. 关于Collection'

    ---恢复内容开始--- 众所周知在我们使用Java中的类的存储的时候经常会使用一些容器,链表的概念,本文将彻底帮您弄清链表的各种概念和模型!!!!注 意理解哦~~~ 大致框架如下: ----> ...

  10. SQL with(unlock)与with(readpast) (转)

    所有Select加 With (NoLock)解决阻塞死锁,在查询语句中使用 NOLOCK 和 READPAST 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAS ...