is it good practice to create functions which use

2019-08-05 20:17发布

问题:

Is it good practice to create functions which use other functions that you built?

I was wondering if it was good to have this since it makes code less portable.

Thanks

回答1:

Very good practice.

It is called code reuse and this is what programming is all about.

As for your argument about it making "code less portable", that only makes sense in a very low level language such as assembly, and even then it makes it more portable as you can isolate platform specific code into functions.

Good code is made of small, understandable functions. Some people say that a function that is longer than 30 lines is too long.



回答2:

Yes. This is the basis of programming. It in no way makes the code less portable, rather the reverse.



回答3:

In procedural and Object Oriented code - yes, though at some point you'll want to review what you've got & see if a library/etc should be dedicated to the functionality you need.

In SQL, no. SQL is set based, and abstracted functions/views/stored procedures are brittle and tend not to perform as well as re-writing with as little function/etc use as possible.



回答4:

Unless you are going to have one just one big function that is your whole program (and you will be able to do complex things only with spaghetti code) you will be forced to invoke other functions so I don't see the point of your question.

Actually if you encapsulate functionality inside a function and use it all over your program you will:

  • save a lot of lines of code (reuse)
  • avoid having to fix many things instead that one
  • keep high readability
  • keep high maitainability: change just the function and it will change whenever you call it)

So please call functions that you wrote from other functions, it's how it works, it is just great.



回答5:

It's good practice not to write very long functions. That usually requires the use of other self written functions.



回答6:

You just described programming. Familiarize yourself with:

  • Don't repeat yourself
  • Inheritance
  • Reuse metrics
  • Polymorphism
  • Virtual inheritance

Reusing "stuff" is one of the primary tenets of any engineering discipline, not only computer science.



回答7:

I would say yes.

If you have a functionality that can be broken down into 2 logical pieces, possibly reusable, do it.

All big APIs use internal components, and often even public functionality makes use of other public functions.

For example:

ShowPage(url) {
    request = new Request(url)
    response = request.Send()
    page = response.GetHTML()
    browser.Load(page)
}

can become:

RetrievePage(url) {
    request = new Request(url)
    response = request.Send()
    return response.GetHTML()
}

ShowPage(url) {
    page = Retrieve(url)
    browser.Load(page)
}

Now RetrieveUrl can be reused, for example by a function searching a website for some kind of content.