Giter Site home page Giter Site logo

ios-study's People

Contributors

wszxy avatar zekunyan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ios-study's Issues

曾祥意-iOS-Task1-反馈3

任务反馈

  • 每次提交内容太多。
  • 提交注释不详细。
  • 没有用CocoaPod管理第三方库。
  • 没有分Group管理代码。
  • 图片要放在Assets.xcassets管理。
  • AppDelegate里面的NSManagedObjectContext等等CoreData的没有用。
  • 大括号不换行,这个按照业界标准来,基本上都是不换行的,自己找工具做格式化。
  • 不需要对外暴露的Protocol不要放在头文件里面,如@interface SNItemViewController : UITableViewController<UISearchBarDelegate,UITableViewDelegate,UITableViewDataSource>
  • @property (nonatomic,strong) FMDatabase *db;少了空格。
  • #pragma mark table中内容的显示写法不对,代码怎么看的。
  • tableView:(UITableView *)tableView numberOfRowsInSection会调用很多次,不能在这里反复赋值,self.data = [[SNItem sharedStore] allItems];,自己找资料搞清楚UITableView机制。
  • Cell的Identifier反复用到,建常量。
  • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 里面重复调用initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"UITableViewCell"]有问题。
  • NSString *subTitle = [NSString stringWithFormat:@"[%@]: %@", cellItem.dateCreated, cellItem.detailText];反复创建,没有必要。
  • 以下代码没有用:
NSString *text;
    if (self.isFiltered)
    {
        text = self.filterData[indexPath.row];
    }
    else
    {
        text = self.data[indexPath.row];
    }
  • createToolbarItems为何要反复调用?
  • - (void)addNewItem函数位置放错。
  • [NSArray arrayWithObjects:space, home, space, nil]用@[]创建,Effective Objective-C怎么看的。
  • SNDetailViewController在iPhone 6下显示有问题。
  • - (instancetype)setViewController方法定义有问题。
  • UIBarButtonItem *bbi命名不对!!!
  • 在save函数里面再对self.item赋值有何意义?
  • NSDateFormatter异步在主线程创建一样会卡。
  • 进入SNDetailViewController会有卡顿
  • SNDBHelper不是这么用的,数据库管理、业务逻辑混在一起,改!
  • static NSString *const TITLE = @"title";命名应该是DB_COLUMN_NAME_TITLE,或者SNDBHelperTitleColumnName,规范规范!
  • self.dispachQueue = dispatch_queue_create("newThread", NULL);创建有问题,自己查。
  • - (SNItem *)createItem这种方法应该是静态的,什么时候该静态什么时候不该分清楚。
  • SNItem里面又有allItems,这种封装办法非常错误,非常错误。

曾祥意-iOS-Task1-反馈2

提交规范

  • 居然没有.gitignore文件!这个必须有!
  • .DS_Store文件不能提交,检查git是否安装到位,Mac的话默认是会有全局的gitignore来处理这个的。
  • xcuserdata文件夹也不能提交,自己查找规范的gitignore写法。

代码规范

  • 没有设置Class Prefix,这个是什么、怎么设置上网查。
  • 要善用#pragma mark -组织代码,现在的代码很乱。
  • 数据库操作完全跟界面、业务裹在一起,没有做模块化、没有抽离,在几面之间传递数据库实例,这个非常错误。
  • 没有善用常量,如数据库的列名、表名等,这些都应该是常量。
  • 代码风格完全不统一,如大括号的位置、空格,寿寿的培训白练了。
  • 要善于利用空行组织代码,函数之间空行保持一致,各种操作要合理分布。

程序

  • ItemViewController里面的IBOutlet用错了,IBOutlet是为了跟Xib、StoryBoard链接的,自定义的View不用这个。
  • footerView的getter方法完全用错了,从Nib文件载入没有保存,这样每次调用footerView都会重新创建。
  • 所有的属性一律用@property定义。
  • iOS里面操作Sqlite最好用FMDB库,自己写会有很多问题,如并发、阻塞等。
  • 在主线程操作数据库,这个犯了大忌,会导致界面卡顿。
  • initWithStyle写法错误,Objective-C的init系列方法有严格的写法定义。
  • 已经registerClass过cell的类以后,在cellForRowAtIndexPath里面不用再判断cell是否为空,自己去查看标准的UITableView的用法。
  • pushViewController在新的viewController初始化、设置完成以后才调用。
  • static内部静态变量的初始化有严格的写法,要用dispatch_once写。
  • NSDateFormatter类的创建非常耗时,尽量只创建一次,并且延时创建。
  • 直接用Array管理列表数据,ItemStore类感觉没有必要。

王远涵-iOS-Task1-反馈2

数据库类、数据库操作重新设计!

  • 这种,没有tag内容的,不需要后面的
  • Java里面的变量命名是驼峰式的!规范怎么看的?button_view_back这种要改!
  • Button btn这种缩写命名不对,详细阅读Java、Android编程规范!要体现出用途!
  • 一般空行空一行,MainActivity的37、38行空多了
  • YXadapter命名错误
  • DB_TIME这种数据库列名命名错误,要不就统一DB_COLUMN_TIME这种
  • NoteDB的onUpgrade必须实现
  • 把adapter放在NoteDB里面是错误的!注意单一职责,这个类返回adapter非常错误!
  • initNote、searchNote的命名不能体现其作用
  • 所有数据库操作没有异步处理,一次性取10000条你怎么办?
  • 同一个数据库创建多个Connection非常危险,详细查阅Sqlite、Android上Sqlite的多Connection问题与并发问题。
  • 在Activity里面获取SQLiteDatabase db = noteDB.getWritableDatabase();然后直接操作数据库是不对的!第一是阻塞主线程,第二是类的职责划分不对!
  • SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");每次都创建,不对!

王远涵-iOS-Task1-反馈3

  • 数据库还是没有回调!
  • Handler要static,否则会有内存泄露
  • DBSender这个类非常奇怪,居然返回Intent,代码结构非常非常奇怪。。。
  • NoteNewActivity里面的buttonBack、buttonFinish完全不用放在类的属性里面,局部变量就行
  • DBOperator的上一层应该是跟业务想关的数据层,不应该直接由Activity拼接ContentValues
  • YXAdapter的文件名有错!我手动改了才能编译

王远涵-iOS-Task1-反馈

提交

  • 有些文件、文件夹是不需要提交的,自己搜索Android Studio的gitignore规范

代码规范

  • 类内部使用的常量应该是private static final
  • 常量的命名有一定的规则,如DB_TABLE_NAMEDB_COLUMN_ID,自己搜索Java的常量命名规则
  • 是Activity的,类的命名一定要是以Activity结尾,这个非常重要,如NoteView类居然是Activity,这个非常不对
  • 要合理使用Java的包管理代码,如数据库相关的放在com.yx.yxnote.db下面
  • xml资源文件的命名也不对

其他

  • 数据库类这种比较重的类,可以选择延时初始化,防止主界面启动时耗时太久卡死
  • Activity里面的控件类属性不要跟数据类属性交错放,要组织起来
  • 数据库的操作要单独用一个或多个类封装起来,不要在Activity里面写大量的数据库操作
  • ListView的Adapter用了ViewHolder非常好,可以尝试使用BaseAdapter,思考更好地封装

曾祥意-iOS-Task1-反馈

  • 提交还是出错
  • 不要提交__MACOSX目录,仔细查阅在Mac环境下,iOS开发中gitignore的规范

曾祥意-iOS-Task1-反馈4

  • 青桔的DBHelper写的有问题,我还没有改。。你直接拿来用。。也不想想为什么,比如,read方法就是同步的。。加递归锁是为了防止在多个异步线程同时调用,这个Demo里面完全用不到。
  • 数据库唯一的主键ID反而不用,所有的增删改全部直接比较文本数据,万一有一模一样的数据岂不是全部都改了、全部都删了?大哥,你可是搞后端的啊。。。
  • SNItemService的存在是错误的,这个就是个全局变量,代码里面最多允许像用户是否登录了这种真的是全局唯一的变量,业务数据不能这么干,以后数据种类多了,岂不是全局变量满天飞?
  • 所有的数据库异步操作没有加回调,如何知道什么时候操作完了?如何知道什么时候反馈到页面?

曾祥意-iOS-Task1-反馈5

  • 数据库还是没有回调!如何知道数据操作执行完了没有?应该确保执行成功了才执行下一步。
  • SNDBService里面的dbPath、queue没有用的都删掉,不应该有无用的东西
  • getAllDataWithBlockcompletion应该是getAllDataWithComplete,不用明显的Block注明,除非要区分,命名应该是先是形容词再是名词
  • SNItem的idNum为什么类型是字符串?为什么都是字符串?这个要改。isFavor、date都不应该是字符串。
  • SNItemViewController里面的dbPath也删掉,代码里面无用的都删掉,以后多人合作怎么办?
  • 能直接下划线访问的变量全部用下划线,需要调用setter、getter采用self.xxx
  • #pragma mark 是用来区分代码逻辑段的,不是为了给函数注释
  • searchbar的bar首字母大写,还有其它的命名错误一并改
  • 代码空行、组织不够清晰,如下
// 点击 cancel 时去掉 mask ,reloadData
    searchBar.text = @"";
    [searchBar setShowsCancelButton:NO animated:YES];
    self.tableView.allowsSelection = YES;
    self.tableView.scrollEnabled = YES;
    [searchBar resignFirstResponder];
    self.mask.alpha = 0;
    self.isFiltered = NO;
    [self.tableView reloadData];
    self.navigationController.toolbarHidden = NO;

这种应该按照self、searchBar、tableView的分开写,而不是一行这个一行另一个,并用空行分开,其他地方也是如此

  • UITextView *contentField命名错误
  • setDateFormat只用调用一次
  • else应该在前一个if的大括号之后
  • SNDetailViewController里面的isFavo明明是BOOL类型的,为啥要用字符串?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.